1.在listview中添加头部时要在listview添加数据以前添加,不然会把添加的头部当场第一个item。从而报错。html
2.ImageView中使用android:scaleType="centerCrop"表示按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)。如下是其包含的类型: CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示android
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)缓存
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,经过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽异步
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示ide
FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置布局
FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置post
FIT_XY / fitXY 把图片不按比例扩大/缩小到View的大小显示字体
MATRIX / matrix 用矩阵来绘制,动态缩小放大图片来显示。动画
布局里添加android:scaleType="fitXY"能够将图片按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满Viewui
3.在Dialog中监听返回键时须要判断按下仍是弹起,不然会运行两次。
/* * 对Dialog物理返回键的监听 */ OnKeyListener backListener = new OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && event.getAction() == KeyEvent.ACTION_DOWN) { deleteActivity();// 执行关闭时的动画效果 return true; } return false; } };
固然须要添加进Dialog中
dialog.setOnKeyListener(backListener);
4.动态改变字体颜色 通常使用html改变,可是这种方法改变的固定的字体
Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色")
动态的字体使用SpannableStringBuilder,以下:
/** * 更改字体大小和颜色 * size是像素大小 * start字符串开始改变的位置 */ public static SpannableString changStr(String str, int size, int color, int start){ SpannableString spanString = new SpannableString(str); //改变其颜色 ForegroundColorSpan span = new ForegroundColorSpan(color); spanString.setSpan(span, start, str.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); //改变其大小 AbsoluteSizeSpan abspan = new AbsoluteSizeSpan(size, false); spanString.setSpan(abspan, start, spanString.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE); return spanString; }
5.setClickable 设置为true时,代表控件能够点击,若是为false,就不能点击;“点击”适用于鼠标、键盘按键、遥控器等; 注意,setOnClickListener方法会默认把控件的setClickable设置为true。这就是为何会出现设置为true了,可是没有效果
setEnabled 使能控件,若是设置为false,该控件永远不会活动,无论设置为何属性,都无效; 设置为true,代表激活该控件,控件处于活动状态,处于活动状态,就能响应事件了,好比触摸、点击、按键事件等; setEnabled就至关于总开关同样,只有总开关打开了,才能使用其余事件。
setFocusable 使能控件得到焦点,设置为true时,并非说马上得到焦点,要想马上得到焦点,得用requestFocus; 使能得到焦点,就是说具有得到焦点的机会、能力,当有焦点在控件之间移动时,控件就有这个机会、能力获得焦点。
6.滑动里面加判断条件时不能加的太多(如ontouch监听里面判断点击仍是滑动时),不然没有效果反而形成阻挡,同一个if里能够用||不要用&&
7.在引用res/目录下的文件的时候最好是经过getResource()引用,若是getResource打不出来能够经过Context.getResource()的方式。
8.安卓定时器
// 等待500ms在执行动画 Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { startAnima(true);// 开始动画 } }, 500);
/**计算商品详情页面主图的高度*/ int ww = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); int hh = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); detail_list_img.measure(ww, hh); detail_main_pic_height = detail_list_img.getMeasuredHeight();
经过这种方式能够直接计算控件的高度,detail_list_img是ImageView控件。\
10.通常在异步加载大量数据时,须要添加一个缓存的list集合,这样能够避免其adapter刷新时listview没有刷新的问题出现,那么在请求数据时缓存是要删掉的,可是真实的list集合是在请求成功时,根据必定的条件再清空,而后把缓存的新数据添加进真实的list集合.
11.在使用setResult()方法时,要在finish()当前页面以前写.
12.在Fragment中应当使用getActivity()方法获取当前Activity对象. getContext()表示的是获取当前View所在的对象.
13.在父布局中(如LinearLayout)使用
android:focusable="true" android:focusableInTouchMode="true"
这两个属性,能够避免在首次进入页面时弹出软键盘和EditText默认获取焦点
14.在使用listview监听setOnItemLongClickListener时若是没有反应,检查item里面是否含有imagview,button等相似控件获取焦点的写法,如focusable="true"的写法,其实也就是item里面焦点的操做被控制了,不会再传到listview了。若是这些都不行,那就在item里面添加android:longClickable="false"这个。