在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片。 这样就容易使apk变大。
那么除了使用drawable这样的图片外,还有其他方法吗?
本次就谈一下自定义图形shape,Android上支持以下几种属性shape、gradient、stroke、corners、padding、solid等。
先来看两个例子:
-
<shape
-
xmlns:android="http://schemas.android.com/apk/res/android"
-
android:shape="rectangle">
-
<gradientandroid:startColor="#FFFF0000"
-
android:endColor="#80FF00FF"
-
android:angle="270"/>
-
<paddingandroid:left="50dp"
-
android:top="20dp"android:right="7dp"
-
android:bottom="7dp"/>
-
<cornersandroid:radius="8dp"/>
-
</shape>
效果:
-
<?xmlversion="1.0"encoding="UTF-8"?>
-
<shapeandroid:shape="rectangle"
-
xmlns:android="http://schemas.android.com/apk/res/android">
-
<solidandroid:color="#b4000000"/>
-
<strokeandroid:width="2.0dip"
-
android:color="#b4ffffff"
-
android:dashWidth="3.0dip"
-
android:dashGap="0.0dip"/>
-
<paddingandroid:left="7.0dip"
-
android:top="7.0dip"android:right="7.0dip"
-
android:bottom="7.0dip"/>
-
<cornersandroid:radius="8.0dip"/>
-
</shape>
效果:
总结一下Shape的所有子属性,如图:
简单说明一下:
gradient-- 对应颜色渐变。 startcolor、endcolor就不多说了。android:angle 是指从哪个角度开始变。
solid -- 填充。
stroke -- 描边。
corners -- 圆角。
padding -- 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。
上面这些不是本讲重点。 本讲的重点是这些xml中属性,与Java类的对应关系, 以及如何使用Java类写出上面一样的效果!
首先来看对应关系:
父节点 shape -- ShapeDrawable
[子节点] gradient --
[子节点]padding --
[子节点]corners -- setCornerRadius、setCornerRadii
[子节点]solid --
[子节点] stroke -- setStroke
[子节点] size -- setSize
发现只有几个是可以对应的~~ 看来通过Java代码来实现上述是行不通的..
暂时研究到这, 如果有实现的朋友,希望可以留言指点,非常感谢。
附件对android.graphics.drawable.Drawable包下的类进行了一下总结。 包括类与XML属性的对应关系。 感觉很不错! 需要的各位可以学习一下。
下载地址: http://download.csdn.net/source/3251635
分享到:
相关推荐
android 代码实现shape GradientDrawable
Android中使用Shape自定义形状
Android-GradientDrawable调谐器可以帮助你更直观的理解<shape>中各种属性的作用。
android系统的textview组件的属性详解。和大家一起分享。
Android自定义View中,使用RadialGradient来实现椭圆形的放射性渐变效果。 Android中实现椭圆形的绘制很简单,只需要调用canvas.drawOval()就可以了,但是椭圆形的中心发散渐变效果Android自带的API里面却是没有的,...
Android代码处理视图圆角和色彩的工具类,供大家参考,具体内容如下 一直都用的.XML文件处理圆角与色彩或色彩渐变,觉得很不方便,后来发现了GradientDrawable这个类,就整了个工具类,用起来觉得挺方便 效果图: ...
通过封装GradientDrawable、StateListDrawable 、LayerDrawable 代替每次都需要创建一个shape.xml的不便,一定程度上也可以减少apk体积,并且使用简单。 基于此项目拓展的多功能EastTextView已开源,欢迎使用 >...
import android.graphics.drawable.GradientDrawable; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class PageWidget extends View { private static final ...
主要介绍了Android动画之渐变动画(Tween Animation)用法,结合实例形式详细分析了Android渐变动画Tween Animation实现渐变,缩放,位移,旋转等技巧,需要的朋友可以参考下
Get confusing about the drawable in Android? Try playing with GradientDrawableTuner! With the GradientDrawableTuner, you can see how the properties of GradientDrawable affect the Drawable's appearance...
带阴影特效的Android翻书 、翻页效果,在安卓手机中似乎很常见的翻页方式。通过本效果的学习可了解有关拖拽点、贝塞尔曲线控制等知识。Author : hmg25 Version: 1.0 Description : 计算拖拽点对应的拖拽脚、求解直线...
import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android....
这个程序是对android的部分Drawable的实现。包括了BitmapDrawable,InsetDrawable,ClipDrawable,TransitionDrawable,GradientDrawable,ScaleDrawable,LevelListDrawable,StateListDrawable,layerDrawable。 ...
android Bitmap圆角与倒影的具体实现代码,需要的朋友可以参考一下
Android-CircleDialog基于DialogFragment封装,已封装的对话框类型有,常规对话框、列表框、输入框、进度框;每个对话框类型也支持自定义边框圆角、背景透明度、字体大小与色值初衷是掌握知识点,此库不一定适合你的...
Android 学习文档总结 ................... 1 DevDiv 推荐资源 ........................ 2 Windows 8 ........................................................... 2 iOS .........................................
代码如下:public class PageWidget extends View { private Bitmap foreImage;... private GradientDrawable shadowDrawableRL; private GradientDrawable shadowDrawableLR; private ColorMatrixCo
创建三个GradientDrawable作为按钮背景、进度条背景和进度条前景,通过计算进度条的百分比来设置宽度,然后调用invalidate()重绘。GradientDrawable设置颜色、圆角等参数,当然你也可以直接加载xml作为背景。 3....
背景颜色实现起来很容易,用GradientDrawable在主色之间分段渐变即可,上方的背景色是永远不变的。下方平衡调节只要在白色、选定色和黑色之间渐变即可,下方的颜色随着上方的颜色变化而变化。 颜色条自身控件由于...
GradientColorAnimation 渐变颜色的动画。