如果你是往Android开发路上走,那么以下的10个技术功能实现是你必须要会的,来看看。
技术选型
采用BGARefreshLayout-Android,支持的下拉刷新样式基本可以满足我的需求,使用起来也比较简单,实现两个接口即可设置刷新动作和加载更多的动作。这位卓友的其他开源库也很好用,有兴趣的可以去看下。
使用方法:
私人空间initBGALayout () {//为BGARefreshLayout设置代理 bgaRefreshLayout.setDelegate(这个);//设置下拉刷新和上拉加载更多的风格参数1:应用程序上下文,参数2:是否具有上拉加载更多功能 BGANormalRefreshViewHolder refreshViewHolder=新BGANormalRefreshViewHolder (getContext(),真正的); refreshViewHolder.setLoadingMoreText(“加载更多”); refreshViewHolder.setLoadMoreBackgroundColorRes (R.color.white); refreshViewHolder.setRefreshViewBackgroundColorRes (R.color.white); bgaRefreshLayout.setRefreshViewHolder (refreshViewHolder); }
@Override 公共空间> 公共接口JuheApi { @ get ObservablegetNews (url字符串); @ get Observable getFunny (url字符串); @ get Observable getJoke (url字符串); @ get Observable getTodayInHistory (url字符串); @ get Observable getQueryNews (url字符串); }
公开课Retrofitance { 公共静态最终字符串BASE_URL=" http://gank.io/api/"; 私有静态最终int DEFAULT_TIMEOUT=5; 私人改造改造; 私人JuheApi mJuheApi; 私人OkHttpClient mOkHttpClient;//构造方法私有 私人Retrofitance () {//手动创建一个OkHttpClient并设置超时时间 OkHttpClient。Builder httpClientBuilder=new OkHttpClient.Builder (); httpClientBuilder。connectTimeout (DEFAULT_TIMEOUT TimeUnit.SECONDS); mOkHttpClient=httpClientBuilder.build (); 改造=new Retrofit.Builder () .client (mOkHttpClient) .addConverterFactory (GsonConverterFactory.create ()) .addCallAdapterFactory (RxJava2CallAdapterFactory.create ()) .baseUrl (BASE_URL) .build (); mJuheApi=retrofit.create (JuheApi.class); }//获取单例 公共静态Retrofitance getInstance () { 返回SingletonHolder.INSTANCE; }/* * *根据类型获取新闻信息 */公共空间getNews (Observer订户,字符串类型){ 字符串URL=" "; commonOp (mJuheApi.getNews (URL),用户); }/* * *获取趣图信息 */公共空间getFunny (Observer 订阅者,int pagenum) { 字符串URL=" "; commonOp (mJuheApi.getFunny (URL),用户); }/* * *获取历史上的今天 */公共空间getHistory (Observer 订阅者){ 日历现在=Calendar.getInstance (); 字符串URL=" "; commonOp (mJuheApi.getTodayInHistory (URL),用户); }/* * *获取笑话大全 */公共空间getJoke (Observer 订阅者,int pagenum) { 字符串URL=" "; commonOp (mJuheApi.getJoke (URL),用户); } 公共空间getQueryNews (Observer 订阅者,字符串字){ 字符串URL=" "; commonOp (mJuheApi.getQueryNews (URL),用户); } 私人空间commonOp(可观测的观测,观察者订户){ observable.subscribeOn (Schedulers.io ()) .unsubscribeOn (Schedulers.io ()) .observeOn (AndroidSchedulers.mainThread ()) .subscribe(订户); }//在访问HttpMethods时创建单例 私有静态类SingletonHolder { 私有静态最终Retrofitance实例=new Retrofitance (); } }
不二选择,RxJava2 + RxAndoid告别线程和AsyncTask,不用写处理程序了。
使用方法:
公共空间getContent (int pagenum) { ObserverButterKnife.bind(这个);观察者=new Observer () { @Override 公共空间> @BindView (R.id.tl_web) 工具栏tlWeb; @BindView (R.id.wv_content) WebView wvContent; @BindView (R.id.activity_web) LinearLayout activityWeb; @BindView (R.id.progressbar) ProgressBar ProgressBar; …
配合插件使用效果会更好喔。