Color Drawable
<?xml version="1.0" encoding="utf-8"?> <color xmlns:android="http://schemas.android.com/apk/res/android" android:color="#563459" />
|
Shape Drawable
每个Shape Drawable都包含如下属性:
类型:通过shape属性来指定:
Line 一条横跨了父类View的宽度的水平线。 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line" > <stroke android:width="2dp" android:color="#ff0000" /> </shape> rectangle 矩形 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <stroke android:width="2dp" android:color="#ff0000" /> </shape>
oval 圆弧 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <stroke android:width="2dp" android:color="#ff0000" /> </shape>
ring 圆环 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:innerRadius="100dp" android:thickness="10dp" > <stroke android:width="2dp" android:color="#ff0000" /> </shape>
使用stroke可以指定:轮廓的颜色,线宽,虚线长度,虚线间隔 <stroke android:width="2dp" android:color="#ff0000" android:dashWidth="10dp" android:dashGap="5dp"/>
填充颜色: <solid android:color="#324390"/>
边角 <corners android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" android:topLeftRadius="10dp" android:topRightRadius="20dp" /> 内边距 <padding android:left="35dp" android:right="35dp" android:bottom="35dp" android:top="35dp"/> 渐变效果 线性渐变: <gradient android:angle="45" android:centerColor="#ffffff" android:centerX="60dp" android:centerY="100dp" android:endColor="#000000" android:startColor="#000000" android:type="linear" android:useLevel="false" /> 辐射渐变 <gradient android:centerColor="#ffffff" android:endColor="#FF0000" android:startColor="#000000" android:type="radial" android:useLevel="false" android:gradientRadius="300"/> 扫描渐变 <gradient android:centerColor="#ffffff" android:endColor="#000000" android:startColor="#000000" android:type="sweep" android:useLevel="false" android:gradientRadius="100" />
|
变换Drawable–ScaleDrawable
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_launcher" //缩放中心 android:scaleGravity="center_horizontal|clip_vertical“ //相对于原始Drawable的包围框的目标宽度和高度 android:scaleHeight="100%" android:scaleWidth="100%" /> 在部件文件中使用scaleDrawable <ImageView android:id="@+id/imagescale" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/scale" /> 在Activity中添加: mImageScaleIv = (ImageView) findViewById(R.id.imagescale); mImageScaleIv.setImageLevel(5000); //Level值在0-10000之间,5000表示50%
|
变换Drawable–RotateDrawable
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_launcher" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="180" />
在部件文件中使用rotate Drawable <ImageView android:id="@+id/imagerotate" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/rotate" /> 在Activity中添加: mImageRotateIv = (ImageView) findViewById(R.id.imagerotate); mImageRotateIv.setImageLevel(5000); //Level值在0-10000之间,5000表示50%
|
LayerDrawable
LayerDrawable允许在Drawable资源之上组合多个Drawable资源,如果定义一个半透明的Drawable数组,那么可以将他们彼此堆叠起来,以创建动态形状和变化的复杂组合,LayerDrawable的定义如下所示,其中第一个定义的位于对下方:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable=“@drawable/image1"/> <item android:drawable="@drawable/image2“/> <item android:drawable="@drawable/image3“/> </item> </layer-list>
在布局中使用LayerDrawable <ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/layerdrawable" />
|
状态列表Drawable
允许根据包含该状态列表的View的状态指定一个不同的Drawable。
状态有如下几种:
State_pressed:按下或没有按下
State_focus:有焦点或者没有焦点
State_hovered:光标在View上悬停或者不悬停
State_selected:选中或者没选中
State_checkable能或者不能被选中
State_checked:被选中或者没有被选中
State_enabled:启用或者禁止
State_activited:激活或者未激活
State_window_focus:父窗口有没有焦点
每个状态可以设置为true或者false。对于一个给定的View确定该显示哪个Drawable时,Android会使用和当前状态匹配的状态列表中的第一项。因此默认值应该放在最后。
<selector> <item /> </selector>
|
级别Drawable
使用级别列表可以创建Drawable的资源序列,并给每一层指定一个整形的索引值,如下所示: <?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/nw0" android:maxLevel="0"/> <item android:drawable="@drawable/nw1" android:maxLevel="1"/> <item android:drawable="@drawable/nw2" android:maxLevel="2"/> <item android:drawable="@drawable/nw3" android:maxLevel="3"/> <item android:drawable="@drawable/nw4" android:maxLevel="4"/> <item android:drawable="@drawable/nw5" android:maxLevel="5"/> <item android:drawable="@drawable/nw6" android:maxLevel="6"/> <item android:drawable="@drawable/nw7" android:maxLevel="7"/> <item android:drawable="@drawable/nw8" android:maxLevel="8"/> <item android:drawable="@drawable/nw9" android:maxLevel="9"/> </level-list>
在代码中选择要显示的图像:可以使用如下所示
public void onClick(View v) { mCount=(mCount+1)%9; mImageIV.setImageLevel(mCount); }
|
public static Drawable bitmapToDrawble(Bitmap bitmap,Context mcontext){ Drawable drawable = new BitmapDrawable(mcontext.getResources(), bitmap); return drawable; }
|
AOSP 源码
Android APK 签名
Android JNI
Android 事件处理进阶
Android 动画进阶
Android 多线程开发
Android 小经验
Android 常用第三方库
Android 开发流程
Android 开源源码
Android 绘图进阶
Android 自动化测试
Android 自定义View进阶
Android 设计模式
Android其他
Android基础
Android开发流程
Android性能优化
Android混淆技术
Android质量管理工具
Android逆向工程
Git && github
Hexo 使用
JavaScript
Linux 使用
Objective C 相关
OpenCV
ROS
iOS 工具使用
iOS 开源库分析
iOS 理论基础
iOS 进阶
代码规范
博客分类目录
叨叨系列
工具的使用
开源代码分析
开源库分析
杂类
树莓派
直播
编程技巧
网站收藏
重要控件