1 . 设置actionBar的图标在屏幕底部显示
Android 3.0版本增加的功能,类似menu的作用,在官方的例子中,图标都是在屏幕顶部的,前提是你上面有足够的空间,如果想把actionBar的图标放下屏幕底部就要用下面的代码了 ,在Androidmanifest.xml文件中activity标签中添加
- android:uiOptions="splitActionBarWhenNarrow"
2 . 代码设置文本点击按下颜色变化
- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true"
- android:color="#ffff0000"/> <!-- pressed -->
- <item android:state_focused="true"
- android:color="#ff0000ff"/> <!-- focused -->
- <item android:color="#ff000000"/> <!-- default -->
- </selector>
- <strong>ColorStateList.java 这个类 </strong>
- Button btn=(Button)findViewById(R.id.btn);
- Resources resource=(Resources)getBaseContext().getResources();
- ColorStateList csl=(ColorStateList)resource.getColorStateList(R.color.button_text);
- if(csl!=null){
- btn.setTextColor(color_state_list);//设置按钮文字颜色
- }
这里要提一下 setTextColor这个方法的参数类型是int,而R.drawable.选择器的文件名也是个int型变量,代码编译不会报错,但不会起作用。如果你是动态的生成一些button或textView而又不能使用布局文件,你会很想念这个ColorStateList.Java 这个类的
3. setContentView和inflate区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来
4. 美化我们的seekbar
换了图片,滑块图片只显示一半怎么办? ,看下面的代码和代码注释你会找到答案的
- <SeekBar android:id= "@+id/song_progress"
- android:thumb="@drawable/sound_progressbar_slider" // 滑块的图片
- android:progressDrawable ="@drawable/sound_seekbar_img" //进度条的图片设置,对应的是一个xml文件,功能就是selector的效果
- android:thumbOffset="16dip" // 这个保证滑块中心和进度条首尾两端的中心点是一致的
- android:paddingLeft="16dip" // 保证滑块显示全部,没有它滑块在首尾两端只会显示一半,右一半,左一半。
- android:paddingRight="16dip" // 同上
- android:layout_gravity="center_horizontal"
- android:layout_width="284dip" // 进度条的宽度加上滑块的宽度,可能需要微调下
- android:minHeight="33dip" // 高度要和滑块图片的高度和保持一致,最好这样做,
- android:maxHeight="33dip" // 同上
- android:layout_height="33dip" />
5 两张图片叠加成一张图
这个代码也是之前在网上搜到的,只是实在找不到原始出处了。当然还有别的方法实现叠图的效果,这个经测试验证可用,仅此而已。
- Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable( R.drawable.ic_default_slide)).getBitmap();
- Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable( R.drawable.ic_slide_player)).getBitmap();
- Drawable[] array = new Drawable[2];
- array[0] = new BitmapDrawable(bitmap1);
- array[1] = new BitmapDrawable(bitmap2);
- LayerDrawable la = new LayerDrawable(array);
- // 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom
- la.setLayerInset(0, 0, 0, 0, 0);
- la.setLayerInset(1, 20, 20, 20, 20);
- im.setImageDrawable(la);
6 按XY轴比例缩放图片
- <strong> ImageView.ScaleType.FIT_XY缩放图片使用XY
- ImageView.ScaleType.center:图片位于视图中间,但不执行缩放。</strong>
- ImageView.ScaleType其余的值,感觉没有前两个常用
- ImageView.ScaleType.CENTER_CROP 按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者大于相应的视图的维度
- ImageView.ScaleType.CENTER_INSIDE按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者小于相应的视图的维度
- ImageView.ScaleType.FIT_CENTER缩放图片使用center
- I mageView.ScaleType.FIT_END缩放图片使用END
- ImageView.ScaleType.FIT_START缩放图片使用START
- ImageView.ScaleType.MATRIX当绘制时使用图片矩阵缩放
7 去掉TabHost中Tab间的分割线
网上可以搜到很关于如何去Tabhost下面的白色底线,不过好像对tab标签间的分割线如何去掉却说的比较少,也许遇到这个问题的同学很少吧。
- TabWidget ll = (TabWidget) a.findViewById (R.id.buttonbar);
- <strong>ll.setDividerDrawable( null);</strong>
- tabHost = getTabHost();
- <strong>tabHost.getTabWidget().setDividerDrawable(null); </strong>
8 android 4.0的多选列表使用
这个用着还是挺方便的。
- ListView mList = getListView();
- ModeCallback multiListener = new ModeCallback();
- mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
- mList.setMultiChoiceModeListener(multiListener); //要添加这个监听
- public class ModeCallback implements ListView.MultiChoiceModeListener //当然这里也要实现一些必要的方法