android 知识杂记

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"这个。

相关文章
相关标签/搜索