Android基础——Drawable之Clip、Inset、Rotate、Scale介绍

ClipDrawable       -- 裁剪图片

InsetDrawable     -- 插入图片

RotateDrawable  -- 旋转图片

ScaleDrawable    -- 缩放图片


ClipDrawable 

属性介绍:

clipOrientation -- 裁剪方向

gravity                -- 裁剪重心

注意事项:

1、ClioDrawable的显示是需要设置它的Level值,范围是0-10000。

2、根据重心和裁剪方向的不同可以制作不同的裁剪案例。

经典案例:

1、自定义进度条


步骤一:在res/drawable目录下创建clip.xml:

<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/hensen"
    android:gravity="left" />

步骤二:在res/layout/activity_bitmap下引用:

 <ImageView
        android:id="@+id/clip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/clip" />
步骤三:在代码中的使用:

public class BitmapActivity extends AppCompatActivity {

    //设置起始level
    private int mShowLevel = 200;
    private int mDisapperLever = 10000;
    private ImageView clip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bitmap);

        clip = (ImageView) findViewById(R.id.clip);
        //水平展示,二选一进行演示
        clip.post(horizontalShow);
        //水平消失,二选一进行演示
        clip.post(horizontalDisappear);
    }

    private Runnable horizontalShow = new Runnable() {
        @Override
        public void run() {
            if (mShowLevel < 10000) {
                mShowLevel += 200;
                clip.getDrawable().setLevel(mShowLevel);
                clip.postDelayed(horizontalShow, 100);
            }
        }
    };

    private Runnable horizontalDisappear = new Runnable() {
        @Override
        public void run() {
            if (mDisapperLever > 200) {
                mDisapperLever -= 200;
                clip.getDrawable().setLevel(mDisapperLever);
                clip.postDelayed(horizontalDisappear, 100);
            }
        }
    };
}

 
 

步骤四:查看效果图:

水平展示:

水平消失:

InsetDrawable 

属性介绍:

insetBottom   -- 插入图片的内容与底部边框的距离

insetTop   -- 插入图片的内容与顶部边框的距离

insetRight  -- 插入图片的内容与右边框的距离

insetLeft   -- 插入图片的内容与左边框的距离

步骤一:在res/drawable目录下创建inset.xml:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/hensen"
    android:insetBottom="30dp"
    android:insetLeft="30dp"
    android:insetRight="30dp"
    android:insetTop="30dp" />

步骤二:在res/layout/activity_bitmap下引用:

<ImageView
        android:id="@+id/clip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/inset" />

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/hensen" />
步骤三:效果展示:上图为insetDrawable,下图为原图



RotateDrawable

属性介绍:

fromDegrees  -- 从哪个度数开始

toDegrees       -- 到哪个度数结束

pivotX             -- X轴的重心

pivotY             -- Y轴的重心

注意实项:

1、逆时针旋转的初始Level值是10000,所以图片是倒过来的。

2、这里是以50%x和50%y进行旋转,也就是图片的中心。

经典案例:

1、指南针、表盘、地图指针等旋转物体


步骤一:在res/drawable目录下创建rotate.xml:

<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" />
步骤二:在res/layout/activity_bitmap下引用:

<ImageView
        android:id="@+id/clip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/rotate" />
步骤三:在代码中的使用:

public class BitmapActivity extends AppCompatActivity {

    //设置起始level
    private int mShowLevel = 200;
    private int mDisapperLever = 10000;
    private ImageView clip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bitmap);

        clip = (ImageView) findViewById(R.id.clip);

        //顺时针旋转,二选一进行演示
        clip.post(horizontalShow);
        //逆时针旋转,二选一进行演示
        clip.post(horizontalDisappear);
    }

    private Runnable horizontalShow = new Runnable() {
        @Override
        public void run() {
            if (mShowLevel < 10000) {
                mShowLevel += 200;
                clip.getDrawable().setLevel(mShowLevel);
                clip.postDelayed(horizontalShow, 100);
            }
        }
    };

    private Runnable horizontalDisappear = new Runnable() {
        @Override
        public void run() {
            if (mDisapperLever > 200) {
                mDisapperLever -= 200;
                clip.getDrawable().setLevel(mDisapperLever);
                clip.postDelayed(horizontalDisappear, 100);
            }
        }
    };
步骤四:查看效果图:

顺时针旋转:

Android基础——Drawable之Clip、Inset、Rotate、Scale介绍_第1张图片

倒过来的逆时针旋转:



ScaleDrawable

属性介绍:

ScaleGravity   -- 缩放重心

ScaleHeight    -- 缩放高度

ScaleWidth     -- 缩放宽度

注意事项:

1、这里演示的是原图50%大小的缩放效果。

步骤一:在res/drawable目录下创建scale.xml:

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_launcher"
    android:scaleGravity="center"
    android:scaleHeight="50%"
    android:scaleWidth="50%" />
步骤二:在res/layout/activity_bitmap下引用:

<ImageView
        android:id="@+id/clip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/scale" />

步骤三:在代码中的使用:

public class BitmapActivity extends AppCompatActivity {

    //设置起始level
    private int mShowLevel = 200;
    private int mDisapperLever = 10000;
    private ImageView clip;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bitmap);

        clip = (ImageView) findViewById(R.id.clip);

        //放大,二选一进行演示
        clip.post(horizontalShow);
        //缩小,二选一进行演示
        clip.post(horizontalDisappear);
    }

    private Runnable horizontalShow = new Runnable() {
        @Override
        public void run() {
            if (mShowLevel < 10000) {
                mShowLevel += 200;
                clip.getDrawable().setLevel(mShowLevel);
                clip.postDelayed(horizontalShow, 100);
            }
        }
    };

    private Runnable horizontalDisappear = new Runnable() {
        @Override
        public void run() {
            if (mDisapperLever > 200) {
                mDisapperLever -= 200;
                clip.getDrawable().setLevel(mDisapperLever);
                clip.postDelayed(horizontalDisappear, 100);
            }
        }
    };
}


步骤四:查看效果图:

放大:



缩小:


 








你可能感兴趣的:(android,rotate,clip,inset,Drawale)