
其他Draw文章參考:
Android中Drawable整體介紹
前言
Drawable根據(jù)Drawable的當(dāng)前級(jí)別值剪切另一個(gè)Drawable。 您可以控制Drawable的子對象的寬度和高度,以及重力來控制放置在整個(gè)容器中的位置。 通常通過使用setLevel()增加drawable的級(jí)別來實(shí)現(xiàn)諸如進(jìn)度條之類的東西。
在 XML 文件中定義的對其他可繪制對象進(jìn)行裁剪(根據(jù)其當(dāng)前級(jí)別)的可繪制對象。您可以根據(jù)級(jí)別以及用于控制其在整個(gè)容器中位置的重力,來控制子可繪制對象的裁剪寬度和高度。通常用于實(shí)現(xiàn)進(jìn)度欄之類的項(xiàng)目。
注意
默認(rèn)級(jí)別為 0,即完全裁剪,使圖像不可見。當(dāng)級(jí)別為 10,000 時(shí),圖像不會(huì)裁剪,而是完全可見。
這邊涉及到了一個(gè)裁剪方向與裁剪的位置,比如設(shè)置left,就是將對象在容器左邊緣,那么就是裁剪的右邊的
,如果方向是水平的話,可以達(dá)到一步步展示圖片的效果。 如果是vertical 加 left屬性的話,你設(shè)置成動(dòng)態(tài)改變level水平,你會(huì)發(fā)現(xiàn)是從中間最開始出來的,加的left屬性,再刪除掉時(shí)候也是從中間開始出來,
所謂的裁剪,默認(rèn)的是0,那么被處理的圖片就看不見,level越來越高,那么,可以展示的圖片就越來越多了。裁剪的意思:裁掉的你就看不見了。
增大級(jí)別可減少裁剪量并慢慢顯示圖像。此處的級(jí)別為 7000:
如果是靜態(tài)的使用,感覺沒啥意思,但是如果是動(dòng)態(tài)的修改level,那么就會(huì)出現(xiàn)動(dòng)態(tài)效果了。
做成動(dòng)態(tài)效果之后,會(huì)有不一樣的感覺。也就是說不一定通過動(dòng)畫就可以實(shí)現(xiàn)。
語法
<?xml version="1.0" encoding="utf-8"?>
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/drawable_resource"
android:clipOrientation=["horizontal" | "vertical"]
android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
"fill_vertical" | "center_horizontal" | "fill_horizontal" |
"center" | "fill" | "clip_vertical" | "clip_horizontal"] />
<clip>
定義裁剪可繪制對象。這必須是根元素。
屬性:
xmlns:android
字符串。必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"。
android:drawable
可繪制對象資源。必備。引用要裁剪的可繪制對象資源。
android:clipOrientation
關(guān)鍵字。裁剪方向。
可以選擇:
horizontal : 水平裁剪可繪制對象
vertical : 垂直裁剪可繪制對象
android:gravity
關(guān)鍵字。指定可繪制對象中要裁剪的位置。
必須是以下一個(gè)或多個(gè)(用 '|' 分隔)常量值:

測試
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/test"
android:clipOrientation="horizontal"
android:gravity="left"
>
</clip>
XML文件中
<ImageView
android:id="@+id/imageView_test"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="70dp"
android:background="@drawable/clip_drawable"/>
代碼中:
ImageView imageView = (ImageView) findViewById(R.id.imageView_test);
ClipDrawable clipDrawable = (ClipDrawable) imageView.getBackground();
clipDrawable.setLevel(5000);
效果圖:
