Android中一些小的知识点
2017-10-23 22:34
337 查看
这篇博文是专门用来记录Android中哪些不常使用到的小知识
1.设置ListView的EmptyView,ListView设置EmptyView,当ListView没有数据时就会显示这个布局2.SystemClock.sleep(2000) 睡眠一秒,这个方法是不会抛出异常的
3.实时监听EditText的字符输入 editText.addTextChangeListener()
4.ListView中设置分割线
<ListView android:layout_width="match_parent" android:layout_height="200dp" <!-- 在这里面如果你设置divider而不设置dividerHeight的话,是无法显示分割线的 --> android:divider="@android:color/darker_gray" android:dividerHeight="2dp"> </ListView>
5.compile ‘com.jakewharton:butterknife:6.1.0’
6.如果使Activity单独占用一个任务栈,设置Activity的启动模式为SingleTask
7.设置某个Activity的excludeFromRecents:是否从最新列表中移除Activity所在的应用, 只有设置这个属性的Activity执行了,这个属性才会生效
8.内容观察者
//当数据库发生变化时通知 //注册内容观察者观察更新通知消息、 Uri uri = Uri.parse("content://com.itheima.mobliesafe95.UPDATESQLITE"); //notifyForDescendents : 匹配模式,true:精确匹配,false:模糊匹配 getContentResolver().registerContentObserver(uri, true, new ContentObserver(null) { //当数据库中的数据更新的时候调用的方法 public void onChange(boolean selfChange) { list.clear(); list = appLockDao.queryAll(); }; }); //当数据删除成功的时候,发送一个数据更新的消息,告诉内存观察者,这样内容观察者就可以观察到数据的变化,实现更新数据库操作 ContentResolver contentResolver = mContext.getContentResolver(); Uri uri = Uri.parse("content://com.itheima.mobliesafe95.UPDATESQLITE"); //uri : uri地址 //observer : 通知哪个内容观察者,如果是null,表示通知所有通过uri地址注册内容观察者 contentResolver.notifyChange(uri, null);//通知内容观察者数据发生变化了
9.图片截取
如果想要将图片的右半部分截取出来可以使用matrix.postTranslate(-width,0) 向左平移图片的一半,也就是将画布移动,而不是移动图片
10.两个集合对象指向一个集合,一个集合在遍历时,可以使用另一个集合删除其中的数据,间接的实现了边遍历边删除,但是不能使用增强for循环,那样会报错
11.Android系统中控件绘制显示流程一般为三个步骤:1:测量宽高, 2:设置显示位置,3:绘制显示操作 只有经过了这三个步骤控件才会显示在界面上。
12.关于设置边距的问题
4000
public class PullToRefreshListView extends ListView { private TextView tvState; private ProgressBar progressBar; private ImageView ivImage; int i = 0; private View mHeaderView; public PullToRefreshListView(Context context) { this(context, null); } public PullToRefreshListView(Context context, AttributeSet attrs) { this(context, attrs, -1); } public PullToRefreshListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setHeaderView(); } private void setHeaderView() { mHeaderView = View.inflate(getContext(), R.layout.header_view, null); // this.addHeaderView(mHeaderView); tvState = (TextView) mHeaderView.findViewById(R.id.textView); progressBar = (ProgressBar) mHeaderView.findViewById(R.id.progressBar); ivImage = (ImageView) mHeaderView.findViewById(R.id.imageView); mHeaderView.measure(0, 0); mHeaderView.setPadding(0, -mHeaderView.getMeasuredHeight(), 0, 0);// 1 this.setPadding(0, 100, 0, 0); // 2 } }
上面代码中有两个setpadding,但其意义却不相同
1:代表的是该HeaderView在ListView中的相对于ListView来说的间距。
2:代表的是ListView中内容相对于ListView的间距。
13 . 如果ListView设置了头布局和脚布局都算是一个内容项会算进 count数
14 : requestDisallowInterceptTouchEvent(true) 请求父类不拦截本View触摸事件,后期通过视频得知, down事件是无法被拦截的,只能被消费。后通过实践得知确实可行,这个特性解决了SlidingMenu与ViewPager首页的滑动冲突。
15.服务器端在返回List集合时,最好先使用Json工具转换为json字符串之后再返回 String s = JsonUtils.objectToJson(notificationList);
相关文章推荐
- 转载-Android开发网上的一些重要知识点3
- android 开发中遇到的一些小的知识点在此做一个记录(持续更新)
- Android开发网上的一些重要知识点【1】
- [置顶] Android 学习笔记一些小知识点(2014.08.25更新)
- Android开发网上的一些重要知识点
- android 联系人数据库一些知识点
- Android开发网上的一些重要知识点
- Android开发网上的一些重要知识点
- Android开发网上的一些重要知识点【1】
- Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点(一)
- Android开发网上的一些重要知识点
- Android开发,MapBox的使用及部分功能实现(二)----- draw、layer、以及一些杂的知识点
- Android开发中的一些java知识点
- android 一些重要的知识点总结
- Android开发网上的一些重要知识点【2】
- android的一些零碎的知识点
- 【android】android开发网上一些重要的知识点
- Android开发网上的一些重要知识点
- 【Android】一些重要知识点整理
- Android开发网上的一些重要知识点