本文出自 “阿敏其人” 簡(jiǎn)書博客咖摹,轉(zhuǎn)載或引用請(qǐng)注明出處。
ClipDrawable對(duì)應(yīng)的標(biāo)簽是<clip>,它可以根據(jù)自己的當(dāng)前的level來裁剪一個(gè)Drawable剩晴。
主要是利用 clipOrientation(垂直/水平) 和 gravity(多種可選的方向),兩者結(jié)合使用侵状。
一赞弥、語(yǔ)法
<?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"] />
主要關(guān)注兩個(gè)節(jié)點(diǎn),一個(gè)android:clipOrientation只有垂直和水平可選
android:gravity可選的就多啦
選項(xiàng) | 作用 |
---|---|
top | 將內(nèi)部的Drawable放在容器的頂部趣兄,不改變它的大小绽左,如果為豎直裁剪,那么從底部開始裁剪 |
bottom | 將內(nèi)部的Drawable放在容器的底部艇潭,不改變它的大小妇菱,如果為豎直裁剪,那么從頂部開始裁剪 |
left | 將內(nèi)部的Drawable放在容器的左部暴区,不改變它的大小闯团,如果為水平裁剪,那么從右邊開始裁剪仙粱,這就是默認(rèn)值 |
right | 將內(nèi)部的Drawable放在容器的右部房交,不改變它的大小,如果為水平裁剪伐割,那么從左邊開始裁剪 |
center_vertica l 內(nèi)部的Drawable在垂直方向上填充容器候味,如果是垂直裁剪,那么僅當(dāng)ClipDrawable等級(jí)為0的時(shí)候隔心,才能有裁剪行為 | |
center_horizontal | 使內(nèi)部的Drawable在容器中水平居中白群,不改變它的大小,如果為水平裁剪硬霍,那么僅當(dāng)ClipDrawable的等級(jí)為0時(shí)帜慢,才能有裁剪行為 |
center | 是內(nèi)部的Drawable在容器中水平和豎直方向都居中,不改變大小,如果為處置裁剪粱玲,那么從上下同時(shí)開始裁剪躬柬;如果為水平裁剪,那么左右同時(shí)開始裁剪 |
fill | 使內(nèi)部的Drawable在水平和垂直方向上同時(shí)填充容器抽减,僅當(dāng)ClipDrawable的等級(jí)為0時(shí)允青,才能有裁剪行為 |
clip_vertocal | 附加選項(xiàng),表示垂直方向的裁剪卵沉,較少使用 |
clip_horizoltal | 附加選項(xiàng)颠锉,表示水平方向的裁剪,較少使用 |
二史汗、demo
clipdrawable_simple.xml
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/star"
android:clipOrientation="horizontal"
android:gravity="bottom">
</clip>
.
.
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@mipmap/star"
android:layout_marginBottom="20dp"/>
<ImageView
android:id="@+id/mIvClip"
android:layout_width="200dp"
android:layout_height="200dp"
android:background="@drawable/clipdrawable_simple"
/>
</LinearLayout>
.
.
代碼
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.os.Bundle;
import android.widget.ImageView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView imageView = (ImageView) findViewById(R.id.mIvClip);
//ClipDrawable clipDrawable = (ClipDrawable) imageView.getDrawable(); 這樣寫會(huì)報(bào)空指針異常
ClipDrawable clipDrawable = (ClipDrawable) imageView.getBackground();
clipDrawable.setLevel(5000);
}
}
.
.
效果展示
了解更多的Drawable分類 Drawable圖像資源抽象類
本篇完