一、LayerDrawable
1、定义layout_logo.xml,可以放一个drawable数组,即多个item 使用android:left|top|bottom|right来制定目标组件的位置。最下的Item被绘制在最上面。
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/icon" android:gravity="center" /> </item> <item android:top="25dp" android:left="25dp"> <bitmap android:src="@drawable/icon" android:gravity="center" /> </item> <item android:top="50dp" android:left="50dp"> <bitmap android:src="@drawable/icon" android:gravity="center" /> </item> </layer-list>
定义一个自定义进度条
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定义轨道的背景 --> <item android:id="@android:id/background" android:drawable="@drawable/grow" /> <!-- 定义轨道上已完成部分的外观--> <item android:id="@android:id/progress" android:drawable="@drawable/ok" /> </layer-list>
2、使用方法
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 定义一个拖动条,并改变轨道外观 --> <SeekBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="100" android:progressDrawable="@drawable/my_bar" style="@android:style/Widget.ProgressBar.Horizontal" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/layout_logo" /> </LinearLayout>
二、StateListDrawabl。。随目标组件状态的变化而自动切换
根元素为<selector..../>
<?xml version="1.0" encoding="UTF-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 指定获得焦点时的颜色 --> <item android:state_focused="true" android:color="#f44" /> <!-- 指定失去焦点时的颜色 --> <item android:state_focused="false" android:color="#111" /> </selector>
三、ShapeDrawer资源
用于定义一个基本的几何图形(如矩形、圆形、线条等)根元素为<shape.../>
android:shape rectangle oval line ring。
shape1
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- 设置填充颜色 --> <solid android:color="#fff"/> <!-- 设置四周的内边距 --> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <!-- 设置边框 --> <stroke android:width="3dip" android:color="#ff0" /> </shape>
shape2
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- 定义填充渐变颜色 --> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <!-- 设置内填充 --> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <!-- 设置圆角矩形 --> <corners android:radius="8dp" /> </shape>shape3
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 定义填充渐变颜色 --> <gradient android:startColor="#ff0" android:endColor="#00f" android:angle="45" android:type="sweep"/> <!-- 设置内填充 --> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <!-- 设置圆角矩形 --> <corners android:radius="8dp" /> </shape>android:backgroud:设置为定义的shape文件
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/my_shape_1" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/my_shape_2" /> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/my_shape_3" />效果如图:
四、ClipDrawable资源,,从其他位图上的裁剪,, 可以应用在图片进度条上 根元素为<clip.../>
final ClipDrawable drawable = (ClipDrawable) imageview.getDrawable(); // max=10000 //修改ClipDrawable的level值 drawable.setLevel(drawable.getLevel() + 200);五、AnimationDrawable资源 动画资源 <set>为根元素 alpha 透明度的改变 scale缩放改变 translate位移变化 rotate进行旋转 放在/res/anmi路径下。 步骤1 设置开开始状态(透明度、位置、缩放比) 步骤2、设置结束状态 步骤3、设置持续时间 R.anim内置大量常量,linear_interpolator 匀速变化。accelerate_interpolator加速变化,decelerate_interpolator减速变换 java中调用动画资源
super.onCreate(savedInstanceState); setContentView(R.layout.main); final ImageView image = (ImageView) findViewById(R.id.image); //加载动画资源 final Animation anim = AnimationUtils .loadAnimation(this, R.anim.my_anim); //设置动画结束后保留结束状态 anim.setFillAfter(true); Button bn = (Button)findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { //开始动画 image.startAnimation(anim); } });六、使用菜单(menu)布局
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="@string/font_size" android:icon="@drawable/font" android:enabled="true"> <menu> <!-- 定义一组单选菜单项 --> <group android:checkableBehavior="single"> <!-- 定义多个菜单项 --> <item android:id="@+id/font_10" android:title="@string/font_10"/> <item android:id="@+id/font_12" android:title="@string/font_12"/> <item android:id="@+id/font_14" android:title="@string/font_14"/> <item android:id="@+id/font_16" android:title="@string/font_16"/> <item android:id="@+id/font_18" android:title="@string/font_18"/> </group> </menu> </item> <!-- 定义一个普通菜单项 --> <item android:id="@+id/plain_item" android:title="@string/plain_item"> </item> <item android:icon="@drawable/color" android:titleCondensed="1234567890asdfghj"> <menu> <!-- 定义一组允许复选的菜单项 --> <group android:menuCategory="alternative"> <!-- 定义3个菜单项 --> <item android:id="@+id/red_font" android:title="@string/red_title"/> <item android:id="@+id/green_font" android:title="@string/green_title"/> <item android:id="@+id/blue_font" android:title="@string/blue_title"/> </group> </menu> </item> </menu>