ClipDrawable

概述

其他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);

效果圖:


水平方向剪切了一半
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容