工作系列 17:Android开发一些小技巧
1. 如何扩大一个按钮的可点击范围:
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/..."
android:scaleType="centerInside"/>
看起来很小的一个图标,如何让用户比较容易点选上;注意几个小技巧即可:
-
- 设置scaleType为centerInside;
-
- 设置点击ImageView背景为src;
-
- 设置一个Padding 这样多出来的 Padding就是用户看不到的增量 可点击区域
2. 如何避免Android蛋疼的连续点击事件响应
public abstract class NoDoubleClickListener implements OnClickListener {
//这里设置不能超过多长时间
public static final int MIN_CLICK_DELAY_TIME = 1000;
private long lastClickTime = 0;
protected abstract void onNoDoubleClick(View v);
@Override
public void onClick(View v) {
long currentTime = Calendar.getInstance().getTimeInMillis();
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
lastClickTime = currentTime;
onNoDoubleClick(v);
}
}
}
以后的Listener就实现这个就可以了
3. Databinding的一个小坑
场景: 我在使用Databinding动态更新绑定控件一个属性时,我们都知道简单的这种用法:
/**
* 描述:学生对象, @Bindable注解是为了能在BR里面找到这个属性 notifyPropertyChanged(); 这个方法是当调用的时候,会通知绑定的控件去改变值
*/
public class Student extends BaseObservable {
@Bindable
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
notifyPropertyChanged(com.example.junwen.databinding.BR.name);
}
}
但是如果稍微有点小改动如下:
/**
* 描述:学生对象, @Bindable注解是为了能在BR里面找到这个属性 notifyPropertyChanged(); 这个方法是当调用的时候,会通知绑定的控件去改变值
*/
public class Student extends BaseObservable {
private String student_name;
@Bindable
public String getStudentName() {
return name;
}
public void setName(String name) {
this.student_name = name;
notifyPropertyChanged(BR.name);
}
}
Student这个Model如果绑定xml后,我们在调用时,
model.student_name 或 model.studentName
只有后者能达到目的
4. RecycleView网格布局如何设置行间距
这个地址已经写的很仔细了https://my.oschina.net/yaly/blog/515412
5. 点击Back键,系统返回到桌面,然后点击应用程序图标,直接回到之前的Activity界面,这种效果(如Home键的效果)是怎么实现的呢?
通过重写按下Back键的回调函数,转成Home键的效果即可
@Override
public void onBackPressed() {
Intent home = new Intent(Intent.ACTION_MAIN);
home.addCategory(Intent.CATEGORY_HOME);
startActivity(home);
}
6. 常用手机调试应用时,会出现类似错误:”Installation failed with message:INSTALL_CANCELED_BY_USER”
其实是小米手机的一个坑,把截图的USB调试下方的这个箭头标示的开关打开就可以了
7. 关于include的一个疑问
使用include时,需要注意2点:
-
- 如果include标签加了id,一切以这个id为准,复用的Layout的id被覆盖无效
-
- include标签上也可以重新设置宽高,复用Layout的宽高设置同样会被覆盖
8. 如何抓取Android LOG
- android 抓取log 的方法:
-
unix-like 系统:
adb shell logcat -v time thread | tee ./log.log
-
win 系统:
adb shell logcat -v time thread > log.log
命令敲上之后,进行复现,复现完成之后,停止命令,然后把对应的 log.log 发过来。
9. 如何提升Android Studio编译速度
http://blog.csdn.net/zivensonice/article/details/51794719#t3
10. 编译出现 app:packageDebug’. > !zip.isFile() 的解决办法
http://blog.csdn.net/a976112643/article/details/76325943