Android开发过程中的坑及解决方法收录
2019独角兽企业重金招聘Python工程师标准>>>
1.某个控件要放在Linearlayout布局的底部(底部导航条)
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
...>
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="0dp"
android:Layout_weight="2">
...//嵌套的其他布局……
</LinearLayout>
...//嵌套的其他布局
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
</LinearLayout>
</LinearLayout>
简单说明一下,上面的代码中有一个Linearlayout,里面嵌套了两个Linearlayout
这里的关键是嵌套里面的第一个Linearlayout布局,注意这个布局里面的这两行属性代码
`android:layout_height="0dp"`
`android:Layout_weight="2"`
第二个Linearlayout就是可以放在底部的一个Linearlayout(当然你可以写你自己的布局)
2.RecyclerView显示图片卡顿优化
思路:图片太多,显示卡顿的原因主要是因为在RecyclerView滑动的过程中同时加载网络的图片,所以卡顿。
我们实现滑动的时候不加载网络图片,当不滑动的时候再加载网络图片,这样流畅度就可以提高许多
在RecyclerView的Adapter(自己写的)中添加一个判断RecyclerView是否滑动的boolean变量isScrolling
protected boolean isScrolling = false;
public void setScrolling(boolean scrolling) {
isScrolling = scrolling;
}
之后在Adapter里面的onBindViewHolder方法控制加载图片
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = mlist.get(position).getImg().getUrl();
if (!isScrolling){
//我使用的是Ion显示图片框架
//如果不在滑动,则加载网络图片
Ion.with(holder.imageView.getContext())
.load(url)
.withBitmap()
.placeholder(R.drawable.grey)
.intoImageView(holder.imageView);
}else {
//如果在滑动,就先加载本地的资源图片
Drawable temp = holder.imageView.getResources().getDrawable(R.drawable.grey, null);
holder.imageView.setImageDrawable(temp);
}
}
在相应的Activity中调用RecyclerView的addOnScrollListener方法,设置一个滑动监听器
mRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE) { // 滚动静止时才加载图片资源,极大提升流畅度
adapter.setScrolling(false);
adapter.notifyDataSetChanged(); // notify调用后onBindViewHolder会响应调用
} else{
adapter.setScrolling(true);
}
super.onScrollStateChanged(recyclerView, newState);
}
});
3.ScrollView与RecyclerView滑动冲突
这里使用NestedScrollView即可,然后设置RecyclerView的NestedScrollingEnabled属性为false
两种方法设置RecyclerView的NestedScrollingEnabled属性
- 调用`RecyclerView`的`setNestedScrollingEnabled`方法
- 在xml文件里面,把`RecyclerView`直接设置为`flase`
判断ScrollView是否滑动到底部
给ScrollView添加一个滑动监听器,然后进行相关处理
mNestedsv.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener(www.michenggw.com) {
@Override
public void onScrollChange(www.mingcheng178.com NestedScrollView v, int scrollX,www.trgj888.com int scrollY, int oldScrollX, int oldScrollY) {
View view = mNestedsv.getChildAt(0);
if (mNestedsv.getHeight(www.yongshiyule178.com )+mNestedsv.getScrollY() ==view.getHeight()){
//相关提示
//相关操作
//下拉刷新,数据更新操作
//...
}
}
});
4.使用okhttp返回数据相同解决方法
看了资料,好像是respone.body().string()只能调用一次,还有okhttp是有缓存的
使用的情景:有一个API接口,每次访问改接口,都会返回不同的json数据,但是使用okhttp,每次访问该API返回的数据都是相同
我的解决方法:
给API请求时添加参数,有些API是可以带参数的,可以修改参数,达到是不同网址的效果
5.RecyclerView数据更新
调用Adapter的notifyDataSetChanged方法即可
转载于:https://my.oschina.net/u/3386278/blog/2985150
Android开发过程中的坑及解决方法收录相关推荐
- mysql开发问题解决_开发过程中mysql常见问题的解决方法
本篇文章给大家带来的内容是关于开发过程中mysql常见问题的解决方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 记录开发过程中遇到mysql相关的问题以及解决方法,长期更新. 远 ...
- Android studio 中R变红解决方法
前两日遇到了Android studio中遇到了R变红资源无法识别问题,今天终于解决: 在目前的安卓版本中已经没有message了: 第一步,点击该按钮,可以调出类似message界面 这个界面就会提 ...
- 怎么把linux虚拟机硬盘扩容,Windows下虚拟机Linux(CentOS8)扩容设置 - 磁盘扩容中的坑和解决方法...
摘要:[原创]转载请注明作者Johnthegreat和本文链接 由于虚拟机空间不足,为了避免重装虚拟机,做了一次无损扩容. 过程中的报错如下: 为了详细记录,这里将整个过程详述如下: 一.问题和需求 ...
- android 路径中含有中文的解决方法
经常会从其他文件浏览器打开,文件路径中可能会含有中文字符,这时直接用路径打开中文会变为乱码导致出现FileNotFoundException,不能达到本来目的,这时需要对路径进行解码,在网上搜到的方法 ...
- 记录Android开发中的问题及解决方法
1.DialogFragment 不可取消和点击外部不消失 DialogFragment.getDialog.setCancelable(false);DialogFragment.getDialog ...
- mysql5.7.20 sql mode_MySQL5.7中的sql_mode默认值带来的坑及解决方法
在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是M ...
- android动态设置软键盘弹出模式,Android 弹出软键盘所遇到的坑及解决方法
重要代码: //1.此layout作为最外层的layout: //2.设置需要调整的view: setAdjustView(View view); //3.如果需要控制输入框的显示与隐藏,可以实现On ...
- 在Android Studio中打开Android Device Monitor时报错的解决方法
在Android Studio中打开Android Device Monitor时报错的解决方法 参考文章: (1)在Android Studio中打开Android Device Monitor时报 ...
- CocoaPods更新过程中出现的坑及解决方法
CocoaPods更新过程中出现的坑及解决方法 参考文章: (1)CocoaPods更新过程中出现的坑及解决方法 (2)https://www.cnblogs.com/hero11223/p/1071 ...
- Android开发过程中在sh,py,mk文件中添加log信息的方法
Android开发过程中在sh,py,mk文件中添加log信息的方法 在sh文件中: echo "this is a log info" + $info 在py文件中: print ...
最新文章
- 图神经网络方法总结(Graph Neural Network)
- Selenium2Library关键字(1)
- 学习总结初篇:发现问题
- PWN-PRACTICE-CTFSHOW-7
- fastjson解析多层数据_怎么解析三层List json数据
- MyBatis学习总结(6)——调用存储过程
- (HDU)1061 --Rightmost Digit( 最右边的数字)
- bzoj 1237: [SCOI2008]配对(DP)
- tp5 查询求和_tp5 sum某个字段相加得到总数的例子
- Python 使用pip下载失败的解决方案
- VS2008 调试windows服务项目
- CSDN文章添加版权声明
- S3C2440裸机------GPIO
- 魔兽争霸III—冰封王座6级考试
- 谷仓加密方式_谷仓紧缩谷物如何导致苹果计算机
- 看完这篇关于电池的高票回答 可防储能大忽悠
- 密码学研究-Provider
- 根据指定网站路径下载文件
- 粒子说区块链7:产业链分析之硬件篇
- 理光Ricoh Aficio MP 2011LD 一体机驱动