1.引导页
引导页可以单一用viewPager,也可以结合fragment。推荐结合,毕竟这东西一个手机一般只调用一次,占不了多大空间,但后期如果增加啥新东西,有fragment会好很多。
viewpage:可以简单理解为书页。采用它主要是为了方便滑动。
fragment:理解为简单化的activity。采用是为了让Activity里有几个可以实现部分功能的子页面。
页面布局里是viewpage,初始化viewpage和fragment。将多个fragment组成一个list
adpViewPager=new ViewPagerAdapter(getSupportFragmentManager(),lfFragments); vp.setAdapter(adpViewPager);
关键点在于适配器
List<Fragment> lfFragments; public ViewPagerAdapter(FragmentManager fm, List<Fragment> list) { super(fm); lfFragments=list; } @Override public Fragment getItem(int position) { return lfFragments.get(position); } @Override public int getCount() { return lfFragments.size(); }
viewpage接口ViewPager.OnPageChangeListener
@Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { }
现在已经简单实现。
待续。
2.一般网络请求
暂用okhttp吧。
第一步,加载库,注重版本的话可以去GitHub上搜。
compile 'com.squareup.okhttp3:okhttp:3.10.0' compile 'com.squareup.okio:okio:2.2.2'
public class OkhttpManager { private static volatile OkhttpManager mInstance;//单例引用 private OkHttpClient mOkHttpClient;// public static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown; charset=utf-8"); private OkhttpManager(Context context){ mOkHttpClient = new OkHttpClient().newBuilder() .connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)//设置超时时间 .readTimeout(10, java.util.concurrent.TimeUnit.SECONDS)//设置读取超时时间 .writeTimeout(10, java.util.concurrent.TimeUnit.SECONDS)//设置写入超时时间 .build(); //初始化Handler } public static OkhttpManager getmInstance(Context context){ if(mInstance == null){ synchronized (OkhttpManager.class){ if(mInstance == null){ mInstance = new OkhttpManager(context); } } } return mInstance; } public <T> Call postAsynHttp(String url, HashMap<String,String> paramsMap, final ReqCallBack<T> callBack){ try{ FormBody.Builder builder = new FormBody.Builder(); for(String key : paramsMap.keySet()){ builder.add(key,paramsMap.get(key)); } RequestBody body = builder.build(); Request request = new Request.Builder().url(url).post(body).build(); final Call call = mOkHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { faileCallBack("访问失败",callBack); callBack.onReqFailed("访问失败"); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ String string = response.body().string(); Log.d("jiejie","访问成功 " +string ); successCallBakc((T)string,callBack); }else { Log.d("jiejie","访问失败 "); faileCallBack("服务器错误",callBack); callBack.onReqFailed("服务器错误"); } } }); return call; }catch (Exception e){ return null; } } public void postFile(String filepath, final ReqCallBack callback){ File file = new File(filepath); MultipartBody.Builder builder= new MultipartBody.Builder().setType(MultipartBody.FORM); if (file!=null){ builder.addFormDataPart("file",getFileName()+".png", RequestBody.create(MediaType.parse("image*//*"), file)); } MultipartBody requestBody = builder.build(); Request request = new Request.Builder() .url(AppValue.imagePath) .post(requestBody) .build(); mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { callback.onReqSuccess(response.body().string()); } }); }
发送信息和文件都先简单实现。心急吃不了热豆腐,逐步完善,毕竟所有程序都在不断更新。