1.BitmapDrawable

<?xml version="1.0" encoding="utf-8"?>        android:src="@drawable/create"                android:antialias="true"                android:dither="true"                android:filter="true"                android:gravity="                top|bottom|left|right        |center_vertical|center_horizontal|center                |fill_vertical|fill_horizontal|fill        |clip_vertical|clip_horizontal"                android:mipMap="false"                android:tileMode=" ["disabled"|"clamp"|"repeat"|"mirror"]"    >

2.NinePatchDrawable

点9图可以自动根据所需的宽高进行相应的缩放并保证不失真

属性基本和BitmapDrawable相同

<?xml version="1.0" encoding="utf-8"?>

3.ShapeDrawable

在代码中生成的是GradientDrawable对象

<?xml version="1.0" encoding="utf-8"?>    android:shape=""        android:innerRadius="@dimen/activity_horizontal_margin"            android:innerRadiusRatio="1"        android:thickness="@dimen/activity_horizontal_margin"        android:thicknessRatio="1"         android:useLevel="false"     >                                                          android:type=""                        android:angle="0"                android:centerX="1"        android:centerY="1"                android:startColor="@color/colorAccent"        android:centerColor="@color/colorAccent"        android:endColor="@color/colorAccent "                android:gradientRadius="1"                 android:useLevel="false"        />                  android:width="@dimen/activity_horizontal_margin"                android:color="@color/colorAccent"                android:dashWidth="@dimen/activity_horizontal_margin"                android:dashGap="@dimen/activity_horizontal_margin"        />

4.LayerDrawable

一种不同层次的Drawable的集合,放置不同层面而达到叠加后的效果,一个layer-list可包含多个item
默认情况下,layer-list中所有的View都会被缩放至View的大小(对于bitmap可通过android:gravity控制图片显示效果),下面的item会覆盖上面的item。

<?xml version="1.0" encoding="utf-8"?>              android:drawable="@drawable/drawable_bitmap"                    android:top="@dimen/activity_horizontal_margin"          android:bottom="@dimen/activity_horizontal_margin"          android:left="@dimen/activity_horizontal_margin"          android:right="@dimen/activity_horizontal_margin"        >                                                                                                            

5.StateListDrawable

不同状态选择不同drawable

<?xml version="1.0" encoding="utf-8"?>          android:constantSize="true"                    android:dither="true"                    android:variablePadding="true"    >                     

6.LevelListDrawable

Drawable的集合,每个Drawable都可设置最小level和最大level,View的背景可通过getBackground().setLevel()设置不同了Level匹配不同的Drawable
ImageView的话可通过setIamgeLevel()匹配不同的Drawable

<?xml version="1.0" encoding="utf-8"?>                    

7.TransitionDrawable

只能实现两个Drawable的淡入淡出效果
默认显示item1

 TransitionDrawable drawable= (TransitionDrawable) mIvLevel.getBackground();        if (!mBoolean)        {            //从item1淡出,item2淡入            drawable.startTransition(1000);            mBoolean=true;        }        else        {            //反转            drawable.reverseTransition(1000);            mBoolean=false;        }
<?xml version="1.0" encoding="utf-8"?>        

8.InsetDrawable

把Drawable内嵌到自己当中

<?xml version="1.0" encoding="utf-8"?>                

9.ScaleDrawable

适合缩小一个特定的drawable

<?xml version="1.0" encoding="utf-8"?>       android:scaleWidth="1%"       android:scaleHeight="50%"       android:scaleGravity="center"              android:level="1"    >

10.ClipDrawable

裁剪Drawable 由clipOrientation和gravity共同决定裁剪位置

ClipDrawable clipDrawable= (ClipDrawable)mIvLevel.getDrawable();//level取值0到10000,取值越大裁剪越少 0完全裁剪,10000表示不裁剪clipDrawable.setLevel(5000);
<?xml version="1.0" encoding="utf-8"?>      android:clipOrientation="vertical"      android:gravity="center"          >

自定义Drawable

public class CustomDrawable extends Drawable {        private Paint mPaint;    public CustomDrawable(int  color) {        mPaint=new Paint(Paint.ANTI_ALIAS_FLAG);        mPaint.setColor(color);    }    @Override    public void draw(Canvas canvas) {        final Rect rect=getBounds();        float cx=rect.exactCenterX();        float cy=rect.exactCenterY();        canvas.drawCircle(cx,cy,Math.min(cx,cy),mPaint);    }    @Override    public void setAlpha(int alpha) {        mPaint.setAlpha(alpha);        invalidateSelf();    }    @Override    public void setColorFilter(ColorFilter colorFilter) {        mPaint.setColorFilter(colorFilter);    }    @Override    public int getOpacity() {        return PixelFormat.TRANSLUCENT;    }}

圆形Drawable

public class CircleImageDrawable extends Drawable {    private Paint mPaint;    private int mWidth;    private Bitmap mBitmap ;    public CircleImageDrawable(Bitmap bitmap)    {        mBitmap = bitmap ;        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,                Shader.TileMode.CLAMP);        mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setShader(bitmapShader);        mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight());    }    @Override    public void draw(Canvas canvas)    {        canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2, mPaint);    }    @Override    public int getIntrinsicWidth()    {        return mWidth;    }    @Override    public int getIntrinsicHeight()    {        return mWidth;    }    @Override    public void setAlpha(int alpha)    {        mPaint.setAlpha(alpha);    }    @Override    public void setColorFilter(ColorFilter cf)    {        mPaint.setColorFilter(cf);    }    @Override    public int getOpacity()    {        return PixelFormat.TRANSLUCENT;    }}

圆角矩形Drawable

public class RoundImageDrawable extends Drawable {    private Paint mPaint;    private Bitmap mBitmap;    private RectF rectF;    public RoundImageDrawable(Bitmap bitmap)    {        mBitmap = bitmap;        BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,                Shader.TileMode.CLAMP);        mPaint = new Paint();        mPaint.setAntiAlias(true);        mPaint.setShader(bitmapShader);    }    @Override    public void setBounds(int left, int top, int right, int bottom)    {        super.setBounds(left, top, right, bottom);        rectF = new RectF(left, top, right, bottom);    }    @Override    public void draw(Canvas canvas)    {        canvas.drawRoundRect(rectF, 30, 30, mPaint);    }    @Override    public int getIntrinsicWidth()    {        return mBitmap.getWidth();    }    @Override    public int getIntrinsicHeight()    {        return mBitmap.getHeight();    }    @Override    public void setAlpha(int alpha)    {        mPaint.setAlpha(alpha);    }    @Override    public void setColorFilter(ColorFilter cf)    {        mPaint.setColorFilter(cf);    }    @Override    public int getOpacity()    {        return PixelFormat.TRANSLUCENT;    }}

更多相关文章

  1. 图片加载的几种模式
  2. ImageView下载图片加载
  3. Android中TextView中加图片,超链接,部分字或者背景变色。。。
  4. Android:解决RadioGroup中RadioButton的图片自定义及每项间隔距离
  5. TextView 文字加图片显示效果
  6. Android常用控件六之图片框(ImageView)
  7. Android Imageview 图片居左居右,自定义圆角
  8. android 加载图片到gallery
  9. Android 图片倒影和setXfermode

随机推荐

  1. Android(安卓)计算控件尺寸
  2. 九宫格
  3. Android(安卓)左右滑动 控件
  4. Android的按钮按下效果
  5. Android(安卓)GridView,Gallery动态更新数
  6. android sqllite dbhelper
  7. Android用悬浮按钮实现翻页效果
  8. Android(安卓)启动时闪一下黑屏问题的解
  9. android /proc/wake_lock
  10. Android(安卓)Shape制定圆形和圆环形状