Android 초보 자가 알 아야 할 10 가지 기술
기술 선택
1.드 롭 다운 리 셋+더 로드
BGA RefreshLayout-Android 를 사용 하면 지원 하 는 드 롭 다운 새로 고침 스타일 은 기본적으로 나의 수 요 를 만족 시 킬 수 있 고 사용 하기에 도 비교적 간단 하 며 두 개의 인 터 페 이 스 를 실현 하면 새로 고침 동작 을 설정 하고 더 많은 동작 을 불 러 올 수 있 습 니 다.이 탁 우의 다른 개원 고 도 쓰기 좋 으 니 관심 있 는 것 은 가 봐 도 된다.
사용 방법:
private void initBGALayout() {
// BGARefreshLayout
bgaRefreshLayout.setDelegate(this);
// 1: , 2:
BGANormalRefreshViewHolder refreshViewHolder =
new BGANormalRefreshViewHolder(getContext(), true);
refreshViewHolder.setLoadingMoreText(" ");
refreshViewHolder.setLoadMoreBackgroundColorRes(R.color.white);
refreshViewHolder.setRefreshViewBackgroundColorRes(R.color.white);
bgaRefreshLayout.setRefreshViewHolder(refreshViewHolder);
}
@Override
public void onBGARefreshLayoutBeginRefreshing(BGARefreshLayout refreshLayout) {
//
}
@Override
public boolean onBGARefreshLayoutBeginLoadingMore(BGARefreshLayout refreshLayout) {
// , false
return false;
}
2.네트워크 요청사용 방법:
public interface JuheApi {
@GET
Observable<NewsBean> getNews(@Url String url);
@GET
Observable<FunnyBean> getFunny(@Url String url);
@GET
Observable<JokeBean> getJoke(@Url String url);
@GET
Observable<HistoryBean> getTodayInHistory(@Url String url);
@GET
Observable<QueryNewsBean> getQueryNews(@Url String url);
}
public class Retrofitance {
public static final String BASE_URL = "http://gank.io/api/";
private static final int DEFAULT_TIMEOUT = 5;
private Retrofit retrofit;
private JuheApi mJuheApi;
private OkHttpClient mOkHttpClient;
//
private Retrofitance() {
// OkHttpClient
OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();
httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
mOkHttpClient = httpClientBuilder.build();
retrofit = new Retrofit.Builder().client(mOkHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(BASE_URL)
.build();
mJuheApi = retrofit.create(JuheApi.class);
}
//
public static Retrofitance getInstance() {
return SingletonHolder.INSTANCE;
}
/**
*
*/
public void getNews(Observer<NewsBean> subscriber, String type) {
String URL = "";
commonOp(mJuheApi.getNews(URL),subscriber);
}
/**
*
*/
public void getFunny(Observer<FunnyBean> subscriber, int pagenum) {
String URL ="";
commonOp(mJuheApi.getFunny(URL), subscriber);
}
/**
*
*/
public void getHistory(Observer<HistoryBean> subscriber) {
Calendar now = Calendar.getInstance();
String URL = "";
commonOp(mJuheApi.getTodayInHistory(URL),subscriber);
}
/**
*
*/
public void getJoke(Observer<JokeBean> subscriber, int pagenum) {
String URL ="";
commonOp(mJuheApi.getJoke(URL), subscriber);
}
public void getQueryNews(Observer<QueryNewsBean> subscriber, String keyword) {
String URL = "";
commonOp(mJuheApi.getQueryNews(URL), subscriber);
}
private void commonOp(Observable observable, Observer subscriber) {
observable.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
}
// HttpMethods
private static class SingletonHolder {
private static final Retrofitance INSTANCE = new Retrofitance();
}
}
3.응답 식 프로 그래 밍두 번 째 선택 은 RxJava 2+RxAndoid 입 니 다.Thread 와 AsyncTask 와 작별 하고 Handler 를 쓰 지 않 아 도 됩 니 다.
사용 방법:
public void getContent(int pagenum) {
Observer<FunnyBean> observer = new Observer<FunnyBean>() {
@Override
public void onComplete() {
endLoading();
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
endLoading();
onNetworkError();
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(FunnyBean funnyBean) {
if (bgaRefreshLayout.isLoadingMore()) {
} else {
mVisitableList.clear();
}
if (funnyBean.getResult() == null || funnyBean.getResult().getData() == null
|| funnyBean.getResult().getData().size() == 0) {
onDataEmpty();
} else {
mVisitableList.addAll(funnyBean.getResult().getData());
}
mMultiRecyclerAdapter.setData(mVisitableList);
}
};
Retrofitance.getInstance().getFunny(observer, pagenum);
}
4.다양한 유형의 RecyclerView 아 이 템 구현물론 당신 도 오픈 소스 라 이브 러 리 를 선택 할 수 있 습 니 다.다만 저 는 이런 방식 을 사용 하 는 것 에 익숙 하고 사용 하기에 도 비교적 편리 합 니 다.사고 와 실현 방식 도 비교적 간단 하 다.인터페이스 화 된 데이터 와 범 형 을 사용 하여 추상 류 를 추출 하고 구조 가 뚜렷 하 며 확장 성 이 강하 고 똑똑 한 것 을 보면 알 수 있 을 것 이다.
구체 적 인 사용 방법 은 프로젝트 코드 나 위의 이 박문 을 참고 하 는데 관련 된 코드 가 비교적 많 고 주로 약간 구조 화 되 어 열거 하기 어렵다.
5.주해
butterknife,findViewById 와 작별 을 고하 지만 Kotlin 이 있 으 면 우리 도 butterknife 와 작별 할 수 있 을 것 같 습 니 다.작은 칼 이기 때 문 입 니 다.
사용 방법:
@BindView(R.id.tl_web)
Toolbar tlWeb;
@BindView(R.id.wv_content)
WebView wvContent;
@BindView(R.id.activity_web)
LinearLayout activityWeb;
@BindView(R.id.progressbar)
ProgressBar progressbar;
....
ButterKnife.bind(this);
플러그 인 에 맞 춰 사용 하면 효과 가 더 좋 습 니 다.6.그림 불 러 오기
저 는 Glide 를 선 호 합 니 다.GIF 의 수요 가 있 기 때문에 Picasso 는 GIF 를 지원 하지 않 습 니 다.비록 크기 가 작 지만.
글 라 이 드 사용법 참고
사용 방법:
Glide.with(itemView.getContext()).load(pic1path).placeholder(R.mipmap.empty_data).into(imageView);
글 라 이 드 는 더 높 은 단계 의 사용법 이 있 으 니 필요 에 따라 배 워 보 세 요.7.데이터 분석
Gson,Google 의 오픈 소스 라 이브 러 리 는 기본적으로 제 개발 수 요 를 만족 시 킬 수 있 고 다른 것 을 시도 해 본 적 이 없습니다.
사용 중 Retrofit 와 함께 사용
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
retrofit = new Retrofit.Builder().client(mOkHttpClient)
/*This is the key*/
.addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl(BASE_URL)
.build();
플러그 인 에 맞 춰 사용 하면 효과 가 더 좋 습 니 다:GsonFormat8.인터페이스 레이아웃
TabHost+Framgnet 를 사용 하면 일상적인 수 요 를 만족 시 킬 수 있 습 니 다.물론 오픈 소스 라 이브 러 리 Flyco TabLayout 를 사용 하면 멋 진 Tab 페이지 를 구축 하고 Fragment 와 결합 하여 수 요 를 만족 시 킬 수 있 습 니 다.
사용 방법:
switch (i) {
case 0:
textView.setText(" ");
imageView.setImageResource(R.drawable.news);
tabHost.addTab(tabHost.newTabSpec("1").setIndicator(view).setContent(
R.id.frag_news));
break;
case 1:
textView.setText(" ");
imageView.setImageResource(R.drawable.joke);
tabHost.addTab(tabHost.newTabSpec("2").setIndicator(view).setContent(
R.id.frag_joke));
break;
case 2:
textView.setText(" ");
imageView.setImageResource(R.drawable.funny);
tabHost.addTab(tabHost.newTabSpec("3").setIndicator(view).setContent(
R.id.frag_funny));
break;
case 3:
textView.setText(" ");
imageView.setImageResource(R.drawable.history);
tabHost.addTab(tabHost.newTabSpec("4").setIndicator(view).setContent(
R.id.frag_history));
break;
default:
break;
}
Flyco Tab Layout 의 사용 방법 은 관문 이나 인터넷 의 바닷물 같은 박문 을 참고 합 니 다.9.내용 검색
사용자 정의 Toolbar 는 이때 위력 을 나타 낸다.간단 한 텍스트 상자 와 보일 듯 말 듯 한 검색 단 추 를 누 르 면 수 요 를 만족 시 킬 수 있 습 니 다.오픈 소스 창고 도 있 지만 저 에 게 어 울 리 는 것 이 많 지 않 아서 기본적으로 저 는 위 와 같이 이 루어 집 니 다.
사용 방법:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_search"
android:layout_width="match_parent"
android:layout_height="40dp"
android:fitsSystemWindows="true"
android:background="@color/colorToolbar">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_search"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:layout_weight="6"
android:background="@drawable/search_edittext_bg"
android:padding="2dp"
android:textColor="@color/colorBlack"
android:textSize="12sp"/>
<Button
android:id="@+id/bt_search"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:clickable="false"
android:gravity="center"
android:text=" "
android:background="@color/colorToolbar"
android:textColor="@color/colorToolbar"
android:textSize="14sp"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
10.버 전 업데이트제3자 서비스.제 가 사용 하 는 것 은 Fir.im 입 니 다.비교적 좋 습 니 다.제 공 된 버 전 인터페이스 로 버 전 업 데 이 트 를 검사 합 니 다.그리고 로 컬 다운로드 나 브 라 우 저 다운로드 애플 리 케 이 션 으로 넘 어가 설 치 를 완료 하 는 것 도 좋 은 선택 입 니 다.유사 한 플랫폼 이 아직 많 으 니 인터넷 에서 검색 해 보 세 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.