随便写的demo
ButterKnife.bind(this);
@BindView(R.id.btn_http_four)
Button btnFourHttp;
@BindView(R.id.btn_http_five)
Button btnFiveHttp;
static class ViewHolder {
@BindView(R.id.item_search_title)
TextView tvTitle;
@BindView(R.id.item_search_snippet)
TextView tvSnippet;
private ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
使RecyclerView写法更加简单,并封装了下拉刷新和上拉加载
https://github.com/CymChad/BaseRecyclerViewAdapterHelper
用于刷新的框架 可选的种类比较多
https://github.com/scwang90/SmartRefreshLayout
5.1 获取kay F:\WorkPlace\MyDemo>keytool -list -v -keystore app/keystore/debug.jks
5.2 对高德地图的封装,将MapView看做View,建立ILbsLayer接口封装功能
实现了定位,获取定位的信息
搜索的功能,主要用到根据坐标搜索附近和根据搜索内容来搜素
添加Marker,和在地图中心添加一个Marker
设置Zoom 移动地图中心到某个点 移动地图在2点的可视范围
路径的规划,获取路径并画出来
5.3 注:定位的时候需要添加定位的动态权限 ACCESS_COARSE_LOCATION
6.1 项目中GET的封装
6.2 项目中POST的封装
private void login(String phone, String code) {
IRequest request = new BaseRequest(HttpConstants.LOGIN_CONSUMER_URL);
request.setBody("phoneNumber", phone);
request.setBody("verificationCode", code);
OKHttpClientImp.getInstance().get(request, false, new IHttpClient.RequestCallBack() {
@Override
public void onSuccess(BaseResponse response) {
Log.d("jiejie", "onSuccess" + response.getCode() + " " + response.getData());
UserInfo userInfo = new Gson().fromJson(response.getData(), UserInfo.class);
if (userInfo.getStatus().equals("SUCCESS")) {
token = userInfo.getData().getUserInfo().getId() + "_" + userInfo.getData().getToken();
}
Log.d("jiejie", "token:" + token);
}
@Override
public void onFailure(int code) {
Log.d("jiejie", "onFailure " + code);
ToastUtils.showToast("登录失败请重试");
}
});
}
7.1 第一种使用,调用系统的方法来实现
7.2 第二种使用,使用第三方库PictureSelector来实现
7.3 第三种使用,以前写的http://www.cnblogs.com/wangfengdange/p/7443389.html来实现
8.1 定义一个BroadcastReceiver
8.2 实例化过滤器
8.3 绑定
// 定义并实例化过滤器
IntentFilter filter = new IntentFilter();
// 添加过滤器的值
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//filter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
// filter.addAction("android.net.wifi.STATE_CHANGE");
// 实例化广播监听器
mReceiver = new NetworkConnectChangedReceiver();
9.1 用UltraViewPager来实现 https://github.com/alibaba/UltraViewPager
所谓的MVP即是
model 处理业务逻辑(主要是数据读写,或者与后台通信)
view 处理UI控件
presenter 主导器,操作model和view 是Model和View之间的桥梁
使用别人的框架 https://github.com/race604/WaveLoading 来达成效果
mScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
private int lastScrollY = 0;
private int h = DensityUtils.dp2px(170);
private int color = ContextCompat.getColor(getApplicationContext(),R.color.colorPrimary)&0x00ffffff;
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if(lastScrollY < h){
scrollY = Math.min(h,scrollY);
mScrollY = scrollY > h ? h : scrollY;
buttonBar.setAlpha(1f * mScrollY / h);
mToolbar.setBackgroundColor(((255 * mScrollY / h) << 24) | color);
mImageView.setTranslationY(mOffset - mScrollY);
}
lastScrollY = scrollY;
}
});