最近一段时间,Android行业大不如从前轻松,企业要求越来越高了,就算入职了很多时候Android这块也不太受重视,现在Android开发者还能经常接到新需求就算是很幸运的事了,我最近的工作也是没什么活,闲来无事就整理一下Android的一些东西,以免遗忘。
这次要做的类似于许多新闻资讯类app,底部tab切换不同的功能页面,首页中又可以切换不同的新闻类型页面,当切换到最后一个新闻fragment时,再向后滑则父viewpager滑动,具体实现是用的ViewPager+Fragment+ViewPager+Fragment,tab用的是desgin库中的TabLayout,fragment实现懒加载,数据源用的是聚合数据(https://www.juhe.cn/),网络框架用的是张鸿洋大神的OkhttpUtils,因为只是做一个效果,就不搭建Rxjava+Retrofit网络请求框架了,主要用到的三方依赖如下:
compile "com.android.support:design:25.+"
compile 'com.google.code.gson:gson:2.8.2'
compile 'com.zhy:okhttputils:2.6.2'
compile 'com.android.support:recyclerview-v7:25+'
一、准备工作
1. BaseApplica
可以自定义一个Application,一是为了初始化OkhttpUtils,另一个是为了获取一个使用较为方便的Context,因为fragment嵌套过多,使得Context获取比较麻烦
public class BaseApplication extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
OkHttpClient okHttpClient = new OkHttpClient.Builder()
// .addInterceptor(new LoggerInterceptor("TAG"))
.connectTimeout(10000L, TimeUnit.MILLISECONDS)
.readTimeout(10000L, TimeUnit.MILLISECONDS)
//其他配置
.build();
OkHttpUtils.initClient(okHttpClient);
}
public static Context getContext(){
return context;
}
}
2. SharedPreferencesHelper
定义一个SharedPreferences用户偏好存储主要是因为我想实现一个可以添减新闻类型的效果,不过因为昨晚感觉时间有点晚了,而且代码量对博客而言已经不少了,就给这个思路,有兴趣或者有这个需求的兄弟可以参考下这个思路完成。
public class SharedPreferencesHelper {
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
public SharedPreferencesHelper(Context context,String preferenceName){
sharedPreferences = context.getSharedPreferences(preferenceName,Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
public void setSharedPreferencesString(String tag,boolean isFirst) {
editor.putBoolean(tag,isFirst);
editor.commit();
}
public boolean getSharedPreferencesString(String tag) {
return sharedPreferences.getBoolean(tag,false);
}
public <T> void setSharedPreferencesList(String tag, List<T> list){
if (null==list||list.size()==0) {
return;
}
Gson gson = new Gson();
String s = gson.toJson(list);
editor.clear();
editor.putString(tag,s);
editor.commit();
}
public <T> List<T> getSharedPreferencesList(String tag) {
List<T> datas = new ArrayList<>();
String string = sharedPreferences.getString(tag, null);
if (null==string) {
return datas;
}
Gson gson = new Gson();
datas = gson.fromJson(string,new TypeToken<List<T>>(){}.getType());
return datas;
}
}
这个类很简单,初始化的时候传入Context和存储名,创建sharedPreferences和Editor</