<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android復習(二)應用資源——>可繪制對象資源

      可繪制對象資源是圖形的一般概念,是指可在屏幕上繪制的圖形,以及可使用 getDrawable(int) 等 API 檢索,或應用到擁有 android:drawable 和 android:icon 等屬性的其他 XML 資源的圖形??衫L制對象包含以下多種類型:

      位圖文件
      位圖圖形文件(.png、.jpg 或 .gif)。創(chuàng)建 BitmapDrawable
      九宮格文件
      具有可伸縮區(qū)域的 PNG 文件,支持根據(jù)內(nèi)容調(diào)整圖像大小 (.9.png)。創(chuàng)建 NinePatchDrawable。
      圖層列表
      管理其他可繪制對象陣列的可繪制對象。這些可繪制對象按陣列順序繪制,因此索引最大的元素繪制于頂部。創(chuàng)建 LayerDrawable。
      狀態(tài)列表
      此 XML 文件用于為不同狀態(tài)引用不同位圖圖形(例如,按下按鈕時使用不同圖像)。創(chuàng)建 StateListDrawable。
      級別列表
      此 XML 文件用于定義管理大量備選可繪制對象的可繪制對象,每個可繪制對象都配有最大備選數(shù)量。創(chuàng)建 LevelListDrawable。
      轉(zhuǎn)換可繪制對象
      此 XML 文件用于定義可在兩種可繪制對象資源之間交錯淡出的可繪制對象。創(chuàng)建 TransitionDrawable。
      插入可繪制對象
      此 XML 文件用于定義以指定距離插入其他可繪制對象的可繪制對象。當視圖需要小于視圖實際邊界的背景可繪制對象時,此類可繪制對象非常有用。
      裁剪可繪制對象
      此 XML 文件用于定義對其他可繪制對象進行裁剪(根據(jù)其當前級別值)的可繪制對象。創(chuàng)建 ClipDrawable。
      縮放可繪制對象
      此 XML 文件用于定義更改其他可繪制對象大?。ǜ鶕?jù)其當前級別值)的可繪制對象。創(chuàng)建 ScaleDrawable
      形狀可繪制對象
      此 XML 文件用于定義幾何形狀(包括顏色和漸變)。創(chuàng)建 GradientDrawable。

      另請參閱動畫資源文檔,了解如何創(chuàng)建 AnimationDrawable。

      請注意:顏色資源也可用作 XML 中的可繪制對象。例如,在創(chuàng)建狀態(tài)列表可繪制對象時,可以引用 android:drawable 屬性的顏色資源 (android:drawable="@color/green")。

      位圖

      位圖圖像。Android 支持以下三種格式的位圖文件:.png(首選)、.jpg(可接受)、.gif(不建議)。

      您可以使用文件名作為資源 ID 直接引用位圖文件,也可以在 XML 中創(chuàng)建別名資源 ID。

      :在構建過程中,可通過 aapt 工具自動優(yōu)化位圖文件,對圖像進行無損壓縮。例如,不需要超過 256 色的真彩色 PNG 可通過調(diào)色板轉(zhuǎn)換為 8 位 PNG。這樣產(chǎn)生的圖像質(zhì)量相同,但所需內(nèi)存更少。因此請注意,此目錄中的圖像二進制文件在構建時可能會發(fā)生變化。如果您打算以比特流的形式讀取圖像,進而將其轉(zhuǎn)換為位圖,請改為將圖像放在 res/raw/ 文件夾中,避免系統(tǒng)對其進行優(yōu)化。

      位圖文件

      位圖文件是 .png、.jpg 或 .gif 文件。當您將任一位圖文件保存到 res/drawable/ 目錄中時,Android 會為其創(chuàng)建 Drawable 資源。

      文件位置:
      res/drawable/filename.png.png、.jpg 或 .gif
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 BitmapDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      示例:
      當圖像保存為 res/drawable/myimage.png 后,此布局 XML 會將該圖像應用至視圖:
      <ImageView
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:src="@drawable/myimage" />
      

        

       
       

      以下應用代碼將圖像作為 Drawable 進行檢索:

      java代碼:
      
      Resources res = getResources();
      Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
      
      kotlin代碼:
      
      val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.myimage, null)
      

        

       
       
      另請參閱:

      XML 位圖

      XML 位圖是在 XML 文件中定義的資源,指向位圖文件。實際上是原始位圖文件的別名。XML 可以指定位圖的其他屬性,例如抖動和層疊。

      :您可以將 <bitmap> 元素用作 <item> 元素的子項。例如,在創(chuàng)建狀態(tài)列表圖層列表時,可以將 android:drawable 屬性從 <item> 元素中排除,并在其中嵌套用于定義可繪制項的 <bitmap>。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 BitmapDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <bitmap
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:src="@[package:]drawable/drawable_resource"
          android:antialias=["true" | "false"]
          android:dither=["true" | "false"]
          android:filter=["true" | "false"]
          android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                            "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                            "center" | "fill" | "clip_vertical" | "clip_horizontal"]
          android:mipMap=["true" | "false"]
          android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
      

        

       
       
      元素:
      <bitmap>
      定義位圖來源及其屬性。

      屬性:

      xmlns:android
      字符串。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"。這僅當 <bitmap> 是根元素時才需要,當 <bitmap> 嵌套在 <item> 內(nèi)時不需要。
      android:src
      可繪制對象資源。必備。引用可繪制對象資源。
      android:antialias
      布爾值。啟用或停用抗鋸齒。
      android:dither
      布爾值。當位圖的像素配置與屏幕不同時(例如:ARGB 8888 位圖和 RGB 565 屏幕),啟用或停用位圖抖動。
      android:filter
      布爾值。啟用或停用位圖過濾。當位圖收縮或拉伸以使其外觀平滑時使用過濾。
      android:gravity
      關鍵字。定義位圖的重力。重力指示當位圖小于容器時,可繪制對象在其容器中放置的位置。

      必須是以下一個或多個(用 '|' 分隔)常量值:

      說明
      top 將對象放在其容器頂部,不改變其大小。
      bottom 將對象放在其容器底部,不改變其大小。
      left 將對象放在其容器左邊緣,不改變其大小。
      right 將對象放在其容器右邊緣,不改變其大小。
      center_vertical 將對象放在其容器的垂直中心,不改變其大小。
      fill_vertical 按需要擴展對象的垂直大小,使其完全適應其容器。
      center_horizontal 將對象放在其容器的水平中心,不改變其大小。
      fill_horizontal 按需要擴展對象的水平大小,使其完全適應其容器。
      center 將對象放在其容器的水平和垂直軸中心,不改變其大小。
      fill 按需要擴展對象的垂直大小,使其完全適應其容器。這是默認值。
      clip_vertical 可設置為讓子元素的上邊緣和/或下邊緣裁剪至其容器邊界的附加選項。裁剪基于垂直重力:頂部重力裁剪上邊緣,底部重力裁剪下邊緣,任一重力不會同時裁剪兩邊。
      clip_horizontal 可設置為讓子元素的左邊和/或右邊裁剪至其容器邊界的附加選項。裁剪基于水平重力:左邊重力裁剪右邊緣,右邊重力裁剪左邊緣,任一重力不會同時裁剪兩邊。
      android:mipMap
      布爾值。啟用或停用 mipmap 提示。如需了解詳情,請參閱 setHasMipMap()。默認值為 false。
      android:tileMode
      關鍵字。定義平鋪模式。當平鋪模式啟用時,位圖會重復。重力在平鋪模式啟用時將被忽略。

      必須是以下常量值之一:

      說明
      disabled 不平鋪位圖。這是默認值。
      clamp 當著色器繪制范圍超出其原邊界時復制邊緣顏色
      repeat 水平和垂直重復著色器的圖像。
      mirror 水平和垂直重復著色器的圖像,交替鏡像圖像以使相鄰圖像始終相接。
      示例:
      <?xml version="1.0" encoding="utf-8"?>
      <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
          android:src="@drawable/icon"
          android:tileMode="repeat" />
      

        

       
       
      另請參閱:

      九宮格

      NinePatch 是一種 PNG 圖像,您可在其中定義可伸縮區(qū)域,以便 Android 在視圖中的內(nèi)容超出正常圖像邊界時進行縮放。此類圖像通常指定為至少有一個尺寸設置為 "wrap_content" 的視圖背景,而且當視圖通過擴展來適應內(nèi)容時,九宮格圖像也會通過擴展來匹配視圖的大小。舉例而言,Android 的標準 Button 微件所使用的背景便是典型的九宮格圖像,其必須通過伸縮來適應按鈕內(nèi)的文本(或圖像)。

      與普通位圖一樣,您可直接引用九宮格文件,也可通過 XML 定義資源對其進行引用。

      如需完整了解如何創(chuàng)建包含可伸縮區(qū)域的九宮格文件,請參閱 2D 圖形文件。

      九宮格文件

      文件位置:
      res/drawable/filename.9.png
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 NinePatchDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      示例:
      當圖像保存為 res/drawable/myninepatch.9.png 后,此布局 XML 會將九宮格應用到視圖:
      <Button
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:background="@drawable/myninepatch" />
      

        

       
       
      另請參閱:

      XML 九宮格

      XML 九宮格是在 XML 中定義的資源,指向九宮格文件。XML 可以為圖像指定抖動。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 NinePatchDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <nine-patch
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:src="@[package:]drawable/drawable_resource"
          android:dither=["true" | "false"] />
      

        

       
       
      元素:
      <nine-patch>
      定義九宮格來源及其屬性。

      屬性:

      xmlns:android
      字符串。必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"
      android:src
      可繪制對象資源。必備。引用九宮格文件。
      android:dither
      布爾值。當位圖的像素配置與屏幕不同時(例如:ARGB 8888 位圖和 RGB 565 屏幕),啟用或停用位圖抖動。
      示例:
      <?xml version="1.0" encoding="utf-8"?>
      <nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
          android:src="@drawable/myninepatch"
          android:dither="false" />
      

        

       
       

      圖層列表

      LayerDrawable 是管理其他可繪制對象陣列的可繪制對象。列表中的每個可繪制對象均按照列表順序繪制,列表中的最后一個可繪制對象繪于頂部。

      每個可繪制對象由單一 <layer-list> 元素內(nèi)的 <item> 元素表示。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 LayerDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <layer-list
          xmlns:android="http://schemas.android.com/apk/res/android" >
          <item
              android:drawable="@[package:]drawable/drawable_resource"
              android:id="@[+][package:]id/resource_name"
              android:top="dimension"
              android:right="dimension"
              android:bottom="dimension"
              android:left="dimension" />
      </layer-list>
      

        

       
       
      元素:
      <layer-list>
      必備。這必須是根元素。包含一個或多個 <item> 元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"
      <item>
      定義放于圖層可繪制對象中由其屬性所定義位置的可繪制對象。必須是 <layer-list> 元素的子項。接受子 <bitmap> 元素。

      屬性:

      android:drawable
      可繪制對象資源。必備。引用可繪制對象資源。
      android:id
      資源 ID。此可繪制對象的唯一資源 ID。要為此項新建資源 ID,請使用以下形式:"@+id/name"。加號表示應創(chuàng)建為新 ID。您可以使用此 ID 檢索和修改擁有 View.findViewById() 或 Activity.findViewById() 的可繪制對象。
      android:top
      整型。頂部偏移(像素)。
      android:right
      整型。右邊偏移(像素)。
      android:bottom
      整型。底部偏移(像素)。
      android:left
      整型。左邊偏移(像素)。

      默認情況下,所有可繪制項都會縮放以適應包含視圖的大小。因此,將圖像放在圖層列表中的不同位置可能會增大視圖的大小,并且有些圖像會相應地縮放。為避免縮放列表中的項目,請在 <item> 元素內(nèi)使用 <bitmap> 元素指定可繪制對象,并且對某些不縮放的項目(例如 "center")定義重力。例如,以下 <item> 定義縮放以適應其容器視圖的項目:

      <item android:drawable="@drawable/image" />
      

        

       
       

      為避免縮放,以下示例使用重力居中的 <bitmap> 元素:

      <item>
        <bitmap android:src="@drawable/image"
                android:gravity="center" />
      </item>
      

        

       
       
      示例:
      XML 文件保存在 res/drawable/layers.xml 中:
      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
          <item>
            <bitmap android:src="@drawable/android_red"
              android:gravity="center" />
          </item>
          <item android:top="10dp" android:left="10dp">
            <bitmap android:src="@drawable/android_green"
              android:gravity="center" />
          </item>
          <item android:top="20dp" android:left="20dp">
            <bitmap android:src="@drawable/android_blue"
              android:gravity="center" />
          </item>
      </layer-list>
      

        

       
       

      請注意,此示例使用嵌套的 <bitmap> 元素為每個具有“中心”重力的項目定義可繪制對象資源。這可確保沒有圖像會為了適應容器的大小而縮放,因為偏移圖像會造成大小調(diào)整。

      此布局 XML 會將可繪制對象應用到視圖:

      <ImageView
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:src="@drawable/layers" />
      

        

       
       

      結果是一堆不斷偏移的圖像:

      另請參閱:

      狀態(tài)列表

      StateListDrawable 是在 XML 文件中定義的可繪制對象,它會根據(jù)對象狀態(tài),使用多個不同的圖像來表示同一個圖形。例如,Button 微件可以是多種不同狀態(tài)(按下、聚焦或這兩種狀態(tài)都不是)中的其中一種,并且您可利用狀態(tài)列表可繪制對象,為每種狀態(tài)提供不同的背景圖片。

      您可以在 XML 文件中描述狀態(tài)列表。每個圖形由單一 <selector> 元素內(nèi)的 <item> 元素表示。每個 <item> 均使用各種屬性來描述應用作可繪制對象的圖形的狀態(tài)。

      在每個狀態(tài)變更期間,將從上到下遍歷狀態(tài)列表,并使用第一個與當前狀態(tài)匹配的項目 —此選擇并非基于“最佳匹配”,而是選擇符合狀態(tài)最低條件的第一個項目。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 StateListDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android"
          android:constantSize=["true" | "false"]
          android:dither=["true" | "false"]
          android:variablePadding=["true" | "false"] >
          <item
              android:drawable="@[package:]drawable/drawable_resource"
              android:state_pressed=["true" | "false"]
              android:state_focused=["true" | "false"]
              android:state_hovered=["true" | "false"]
              android:state_selected=["true" | "false"]
              android:state_checkable=["true" | "false"]
              android:state_checked=["true" | "false"]
              android:state_enabled=["true" | "false"]
              android:state_activated=["true" | "false"]
              android:state_window_focused=["true" | "false"] />
      </selector>
      

        

       
       
      元素:
      <selector>
      必備。這必須是根元素。包含一個或多個 <item> 元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"
      android:constantSize
      布爾值。如果可繪制對象報告的內(nèi)部大小在狀態(tài)變更時保持不變,則值為“true”(大小是所有狀態(tài)的最大值);如果大小根據(jù)當前狀態(tài)而變化,則值為“false”。默認值為 false。
      android:dither
      布爾值。值為“true”時,將在位圖的像素配置與屏幕不同時(例如:ARGB 8888 位圖和 RGB 565 屏幕)啟用位圖的抖動;值為“false”時則停用抖動。默認值為 true。
      android:variablePadding
      布爾值。如果可繪制對象的內(nèi)邊距應根據(jù)選擇的當前狀態(tài)而變化,則值為“true”;如果內(nèi)邊距應保持不變(基于所有狀態(tài)的最大內(nèi)邊距),則值為“false”。啟用此功能要求您在狀態(tài)變更時處理執(zhí)行布局,這通常不受支持。默認值為 false。
      <item>
      定義要在某些狀態(tài)期間使用的可繪制對象,如其屬性所述。必須是 <selector> 元素的子項。

      屬性:

      android:drawable
      可繪制對象資源。必備。引用可繪制對象資源。
      android:state_pressed
      布爾值。如果在按下對象(例如觸摸/點按某按鈕)時應使用此項目,則值為“true”;如果在默認的未按下狀態(tài)時應使用此項目,則值為“false”。
      android:state_focused
      布爾值。如果在對象具有輸入焦點(例如當用戶選擇文本輸入時)時應使用此項目,則值為“true”;如果在默認的非焦點狀態(tài)時應使用此項目,則值為“false”。
      android:state_hovered
      布爾值。如果當光標懸停在對象上時應使用此項目,則值為“true”;如果在默認的非懸停狀態(tài)時應使用此項目,則值為“false”。通常,這個可繪制對象可能與用于“聚焦”狀態(tài)的可繪制對象相同。

      此項為 API 級別 14 新引入的配置。

      android:state_selected
      布爾值。如果在使用定向控件瀏覽(例如使用方向鍵瀏覽列表)的情況下對象為當前用戶選擇時應使用此項目,則值為“true”;如果在未選擇對象時應使用此項目,則值為“false”。

      當焦點 (android:state_focused) 不充分(例如,列表視圖有焦點但使用方向鍵選擇其中的項目)時,使用所選狀態(tài)。

      android:state_checkable
      布爾值。如果當對象可選中時應使用此項目,則值為“true”;如果當對象不可選中時應使用此項目,則值為“false”。(僅當對象可在可選中與不可選中小部件之間轉(zhuǎn)換時才有用。)
      android:state_checked
      布爾值。如果在對象已選中時應使用此項目,則值為“true”;如果在對象未選中時應使用此項目,則值為“false”。
      android:state_enabled
      布爾值。如果在對象啟用(能夠接收觸摸/點擊事件)時應使用此項目,則值為“true”;如果在對象停用時應使用此項目,則值為“false”。
      android:state_activated
      布爾值。如果在對象激活作為持續(xù)選擇(例如,在持續(xù)導航視圖中“突出顯示”之前選中的列表項)時應使用此項目,則值為“true”;如果在對象未激活時應使用此項目,則值為“false”。

      此項為 API 級別 11 新引入的配置。

      android:state_window_focused
      布爾值。如果當應用窗口有焦點(應用在前臺)時應使用此項目,則值為“true”;如果當應用窗口沒有焦點(例如,通知欄下拉或?qū)υ捒虺霈F(xiàn))時應使用此項目,則值為“false”。

      :請記住,Android 將應用狀態(tài)列表中第一個與對象當前狀態(tài)匹配的項目。因此,如果列表中的第一個項目不含上述任何狀態(tài)屬性,則每次都會應用它,這就是默認值應始終放在最后的原因(如以下示例所示)。

      示例:
      XML 文件保存在 res/drawable/button.xml 中:
      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:state_pressed="true"
                android:drawable="@drawable/button_pressed" /> <!-- pressed -->
          <item android:state_focused="true"
                android:drawable="@drawable/button_focused" /> <!-- focused -->
          <item android:state_hovered="true"
                android:drawable="@drawable/button_focused" /> <!-- hovered -->
          <item android:drawable="@drawable/button_normal" /> <!-- default -->
      </selector>
      

        

       
       

      此布局 XML 將狀態(tài)列表可繪制對象應用到按鈕:

      <Button
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:background="@drawable/button" />
      

        

       
       
      另請參閱:

      級別列表

      管理大量備選可繪制對象的可繪制對象,每個可繪制對象都配有最大備選數(shù)量。若使用 setLevel() 設置可繪制對象的級別值,則會加載級別列表中 android:maxLevel 值大于或等于傳遞至方法的值的可繪制對象資源。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 LevelListDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <level-list
          xmlns:android="http://schemas.android.com/apk/res/android" >
          <item
              android:drawable="@drawable/drawable_resource"
              android:maxLevel="integer"
              android:minLevel="integer" />
      </level-list>
      

        

       
       
      元素:
      <level-list>
      這必須是根元素。包含一個或多個 <item> 元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"
      <item>
      定義要在某特定級別使用的可繪制對象。

      屬性:

      android:drawable
      可繪制對象資源。必備。引用要插入的可繪制對象資源。
      android:maxLevel
      整型。此項目允許的最高級別。
      android:minLevel
      整型。此項目允許的最低級別。
      示例:
      <?xml version="1.0" encoding="utf-8"?>
      <level-list xmlns:android="http://schemas.android.com/apk/res/android" >
          <item
              android:drawable="@drawable/status_off"
              android:maxLevel="0" />
          <item
              android:drawable="@drawable/status_on"
              android:maxLevel="1" />
      </level-list>
      

        

       
       

      在將此項目應用到 View 后,您便可通過 setLevel() 或 setImageLevel() 更改級別。

      另請參閱:

      轉(zhuǎn)換可繪制對象

      TransitionDrawable 是可在兩種可繪制對象資源之間交錯淡出的可繪制對象。

      每個可繪制對象由單個 <transition> 元素內(nèi)的 <item> 元素表示。不支持超過兩個項目。如要向前轉(zhuǎn)換,請調(diào)用 startTransition()。如要向后轉(zhuǎn)換,則調(diào)用 reverseTransition()。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 TransitionDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <transition
      xmlns:android="http://schemas.android.com/apk/res/android" >
          <item
              android:drawable="@[package:]drawable/drawable_resource"
              android:id="@[+][package:]id/resource_name"
              android:top="dimension"
              android:right="dimension"
              android:bottom="dimension"
              android:left="dimension" />
      </transition>
      

        

       
       
      元素:
      <transition>
      必備。這必須是根元素。包含一個或多個 <item> 元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"。
      <item>
      定義要用作可繪制對象轉(zhuǎn)換一部分的可繪制對象。必須是 <transition> 元素的子項。接受子 <bitmap> 元素。

      屬性:

      android:drawable
      可繪制對象資源必備。引用可繪制對象資源。
      android:id
      資源 ID。此可繪制對象的唯一資源 ID。要為此項新建資源 ID,請使用以下形式:"@+id/name"。加號表示應創(chuàng)建為新 ID。您可以使用此 ID 檢索和修改擁有 View.findViewById() 或 Activity.findViewById() 的可繪制對象。
      android:top
      整型。頂部偏移(像素)。
      android:right
      整型。右邊偏移(像素)。
      android:bottom
      整型。底部偏移(像素)。
      android:left
      整型。左邊偏移(像素)。
      示例:
      XML 文件保存在 res/drawable/transition.xml 中:
      <?xml version="1.0" encoding="utf-8"?>
      <transition xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:drawable="@drawable/on" />
          <item android:drawable="@drawable/off" />
      </transition>
      

        

       
       

      此布局 XML 會將可繪制對象應用到視圖:

      <ImageButton
          android:id="@+id/button"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content"
          android:src="@drawable/transition" />
      

        

       
       

      以下代碼會執(zhí)行從第一個項目到第二個項目的 500ms 轉(zhuǎn)換:

      java代碼:
      ImageButton button = (ImageButton) findViewById(R.id.button);
      Drawable drawable = button.getDrawable();
      if (drawable instanceof TransitionDrawable) {
          ((TransitionDrawable) drawable).startTransition(500);
      }
      
      
      kotlin代碼:
      
      val button: ImageButton = findViewById(R.id.button)
      val drawable: Drawable = button.drawable
      if (drawable is TransitionDrawable) {
          drawable.startTransition(500)
      }
      

        

       
      另請參閱:

      插入可繪制對象

      在 XML 文件中定義,以指定距離插入其他可繪制對象的可繪制對象。當視圖需要小于視圖實際邊界的背景時,此類可繪制對象很有用。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 InsetDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <inset
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:drawable="@drawable/drawable_resource"
          android:insetTop="dimension"
          android:insetRight="dimension"
          android:insetBottom="dimension"
          android:insetLeft="dimension" />
      

        

       
       
      元素:
      <inset>
      定義插入可繪制對象。這必須是根元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"
      android:drawable
      可繪制對象資源。必備。引用要插入的可繪制對象資源。
      android:insetTop
      尺寸。頂部插入,表示為尺寸值或尺寸資源
      android:insetRight
      尺寸。右邊插入,表示為尺寸值或尺寸資源
      android:insetBottom
      尺寸。底部插入,表示為尺寸值或尺寸資源
      android:insetLeft
      尺寸。左邊插入,表示為尺寸值或尺寸資源
      示例:
      <?xml version="1.0" encoding="utf-8"?>
      <inset xmlns:android="http://schemas.android.com/apk/res/android"
          android:drawable="@drawable/background"
          android:insetTop="10dp"
          android:insetLeft="10dp" />
      

        

       
       
      另請參閱:

      裁剪可繪制對象

      在 XML 文件中定義,對其他可繪制對象進行裁剪(根據(jù)其當前級別)的可繪制對象。您可以根據(jù)級別以及用于控制其在整個容器中位置的重力,來控制子可繪制對象的裁剪寬度和高度。通常用于實現(xiàn)進度欄之類的項目。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 ClipDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?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
      關鍵字。裁剪方向。

      必須是以下常量值之一:

      說明
      horizontal 水平裁剪可繪制對象。
      vertical 垂直裁剪可繪制對象。
      android:gravity
      關鍵字。指定可繪制對象中要裁剪的位置。

      必須是以下一個或多個(用 '|' 分隔)常量值:

      說明
      top 將對象放在其容器頂部,不改變其大小。當 clipOrientation 是 "vertical" 時,在可繪制對象的底部裁剪。
      bottom 將對象放在其容器底部,不改變其大小。當 clipOrientation 是 "vertical" 時,在可繪制對象的頂部裁剪。
      left 將對象放在其容器左邊緣,不改變其大小。這是默認值。當 clipOrientation 是 "horizontal" 時,在可繪制對象的右邊裁剪。這是默認值。
      right 將對象放在其容器右邊緣,不改變其大小。當 clipOrientation 是 "horizontal" 時,在可繪制對象的左邊裁剪。
      center_vertical 將對象放在其容器的垂直中心,不改變其大小。裁剪行為與重力為 "center" 時相同。
      fill_vertical 按需要擴展對象的垂直大小,使其完全適應其容器。當 clipOrientation 是 "vertical" 時,不會進行裁剪,因為可繪制對象會填充垂直空間(除非可繪制對象級別為 0,此時它不可見)。
      center_horizontal 將對象放在其容器的水平中心,不改變其大小。裁剪行為與重力為 "center" 時相同。
      fill_horizontal 按需要擴展對象的水平大小,使其完全適應其容器。當 clipOrientation 是 "horizontal" 時,不會進行裁剪,因為可繪制對象會填充水平空間(除非可繪制對象級別為 0,此時它不可見)。
      center 將對象放在其容器的水平和垂直軸中心,不改變其大小。當 clipOrientation 是 "horizontal" 時,在左邊和右邊裁剪。當 clipOrientation 是 "vertical" 時,在頂部和底部裁剪。
      fill 按需要擴展對象的垂直大小,使其完全適應其容器。不會進行裁剪,因為可繪制對象會填充水平和垂直空間(除非可繪制對象級別為 0,此時它不可見)。
      clip_vertical 可設置為讓子元素的上邊緣和/或下邊緣裁剪至其容器邊界的附加選項。裁剪基于垂直重力:頂部重力裁剪上邊緣,底部重力裁剪下邊緣,任一重力不會同時裁剪兩邊。
      clip_horizontal 可設置為讓子元素的左邊和/或右邊裁剪至其容器邊界的附加選項。裁剪基于水平重力:左邊重力裁剪右邊緣,右邊重力裁剪左邊緣,任一重力不會同時裁剪兩邊。
      示例:
      XML 文件保存在 res/drawable/clip.xml 中:
      <?xml version="1.0" encoding="utf-8"?>
      <clip xmlns:android="http://schemas.android.com/apk/res/android"
          android:drawable="@drawable/android"
          android:clipOrientation="horizontal"
          android:gravity="left" />
      

        

       
       

      以下布局 XML 會將裁剪可繪制對象應用到視圖:

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

        

       
       

      以下代碼用于獲取可繪制對象,并增加裁剪量,以便逐漸顯示圖像:

      java代碼:
      
      ImageView imageview = (ImageView) findViewById(R.id.image);
      Drawable drawable = imageview.getBackground();
      if (drawable instanceof CLipDrawable) {
          ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000);
      }
      
      kotlin代碼:
      
      val imageview: ImageView = findViewById(R.id.image)
      val drawable: Drawable = imageview.background
      if (drawable is ClipDrawable) {
          drawable.level = drawable.level + 1000
      }
      

        

       

      通過提高級別,即可減少裁剪量并慢慢顯示圖像。以下圖像的級別為 7000:

      請注意:默認級別為 0,即完全裁剪,使圖像不可見。當級別為 10,000 時,圖像不會裁剪,而是完全可見。

      另請參閱:

      縮放可繪制對象

      在 XML 文件中定義的更改其他可繪制對象大?。ǜ鶕?jù)其當前級別)的可繪制對象。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 ScaleDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <scale
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:drawable="@drawable/drawable_resource"
          android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                                "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                                "center" | "fill" | "clip_vertical" | "clip_horizontal"]
          android:scaleHeight="percentage"
          android:scaleWidth="percentage" />
      

        

       
       
      元素:
      <scale>
      定義縮放可繪制對象。這必須是根元素。

      屬性:

      xmlns:android
      字符串必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"。
      android:drawable
      可繪制對象資源。必備。引用可繪制對象資源。
      android:scaleGravity
      關鍵字。指定縮放后的重力位置。

      必須是以下一個或多個(用 '|' 分隔)常量值:

      說明
      top 將對象放在其容器頂部,不改變其大小。
      bottom 將對象放在其容器底部,不改變其大小。
      left 將對象放在其容器左邊緣,不改變其大小。這是默認值。
      right 將對象放在其容器右邊緣,不改變其大小。
      center_vertical 將對象放在其容器的垂直中心,不改變其大小。
      fill_vertical 按需要擴展對象的垂直大小,使其完全適應其容器。
      center_horizontal 將對象放在其容器的水平中心,不改變其大小。
      fill_horizontal 按需要擴展對象的水平大小,使其完全適應其容器。
      center 將對象放在其容器的水平和垂直軸中心,不改變其大小。
      fill 按需要擴展對象的垂直大小,使其完全適應其容器。
      clip_vertical 可設置為讓子元素的上邊緣和/或下邊緣裁剪至其容器邊界的附加選項。裁剪基于垂直重力:頂部重力裁剪上邊緣,底部重力裁剪下邊緣,任一重力不會同時裁剪兩邊。
      clip_horizontal 可設置為讓子元素的左邊和/或右邊裁剪至其容器邊界的附加選項。裁剪基于水平重力:左邊重力裁剪右邊緣,右邊重力裁剪左邊緣,任一重力不會同時裁剪兩邊。
      android:scaleHeight
      百分比??s放高度,表示為可繪制對象邊界的百分比。值的格式為 XX%。例如:100%、12.5% 等。
      android:scaleWidth
      百分比??s放寬度,表示為可繪制對象邊界的百分比。值的格式為 XX%。例如:100%、12.5% 等。
      示例:
      <?xml version="1.0" encoding="utf-8"?>
      <scale xmlns:android="http://schemas.android.com/apk/res/android"
          android:drawable="@drawable/logo"
          android:scaleGravity="center_vertical|center_horizontal"
          android:scaleHeight="80%"
          android:scaleWidth="80%" />
      

        

       
       
      另請參閱:

      形狀可繪制對象

      這是一種在 XML 文件中定義的通用形狀。

      文件位置:
      res/drawable/filename.xml
      文件名用作資源 ID。
      編譯資源的數(shù)據(jù)類型:
      指向 GradientDrawable 的資源指針。
      資源引用:
      在 Java 中:R.drawable.filename
      在 XML 中:@[package:]drawable/filename
      語法:
      <?xml version="1.0" encoding="utf-8"?>
      <shape
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:shape=["rectangle" | "oval" | "line" | "ring"] >
          <corners
              android:radius="integer"
              android:topLeftRadius="integer"
              android:topRightRadius="integer"
              android:bottomLeftRadius="integer"
              android:bottomRightRadius="integer" />
          <gradient
              android:angle="integer"
              android:centerX="float"
              android:centerY="float"
              android:centerColor="integer"
              android:endColor="color"
              android:gradientRadius="integer"
              android:startColor="color"
              android:type=["linear" | "radial" | "sweep"]
              android:useLevel=["true" | "false"] />
          <padding
              android:left="integer"
              android:top="integer"
              android:right="integer"
              android:bottom="integer" />
          <size
              android:width="integer"
              android:height="integer" />
          <solid
              android:color="color" />
          <stroke
              android:width="integer"
              android:color="color"
              android:dashWidth="integer"
              android:dashGap="integer" />
      </shape>
      

        

       
       
      元素:
      <shape>
      形狀可繪制對象。這必須是根元素。

      屬性:

      xmlns:android
      字符串。必備。定義 XML 命名空間,其必須是 "http://schemas.android.com/apk/res/android"。
      android:shape
      關鍵字。定義形狀的類型。有效值為:
      描述
      "rectangle" 填充包含視圖的矩形。這是默認形狀。
      "oval" 適應包含視圖尺寸的橢圓形狀。
      "line" 跨越包含視圖寬度的水平線。此形狀需要 <stroke> 元素定義線寬。
      "ring" 環(huán)形。

      僅當 android:shape="ring" 如下時才使用以下屬性:

      android:innerRadius
      尺寸。環(huán)內(nèi)部(中間的孔)的半徑,以尺寸值或尺寸資源表示。
      android:innerRadiusRatio
      浮點型。環(huán)內(nèi)部的半徑,以環(huán)寬度的比率表示。例如,如果 android:innerRadiusRatio="5",則內(nèi)半徑等于環(huán)寬度除以 5。此值被 android:innerRadius 覆蓋。默認值為 9。
      android:thickness
      尺寸。環(huán)的厚度,以尺寸值或尺寸資源表示。
      android:thicknessRatio
      浮點型。環(huán)的厚度,表示為環(huán)寬度的比率。例如,如果 android:thicknessRatio="2",則厚度等于環(huán)寬度除以 2。此值被 android:innerRadius 覆蓋。默認值為 3。
      android:useLevel
      布爾值。如果此屬性用作 LevelListDrawable,則值為“true”。此屬性的值通常應為“false”,否則無法顯示形狀。
      <corners>
      為形狀產(chǎn)生圓角。僅當形狀為矩形時適用。

      屬性:

      android:radius
      尺寸。所有角的半徑,以尺寸值或尺寸資源表示。對于每個角,這會被以下屬性覆蓋。
      android:topLeftRadius
      尺寸。左上角的半徑,以尺寸值或尺寸資源表示。
      android:topRightRadius
      尺寸。右上角的半徑,以尺寸值或尺寸資源表示。
      android:bottomLeftRadius
      尺寸。左下角的半徑,以尺寸值或尺寸資源表示。
      android:bottomRightRadius
      尺寸。右下角的半徑,以尺寸值或尺寸資源表示。

      :(最初)必須為每個角提供大于 1 的角半徑,否則無法產(chǎn)生圓角。如果希望特定角不要倒圓角,解決方法是使用 android:radius 設置大于 1 的默認角半徑,然后使用實際所需的值替換每個角,為不希望倒圓角的角提供零(“0dp”)。

      <gradient>
      指定形狀的漸變顏色。

      屬性:

      android:angle
      整型。漸變的角度(度)。0 為從左到右,90 為從上到上。必須是 45 的倍數(shù)。默認值為 0。
      android:centerX
      浮點型。漸變中心的相對 X 軸位置 (0 - 1.0)。
      android:centerY
      浮點型。漸變中心的相對 Y 軸位置 (0 - 1.0)。
      android:centerColor
      顏色。起始顏色與結束顏色之間的可選顏色,以十六進制值或顏色資源表示。
      android:endColor
      顏色。結束顏色,表示為十六進制值或顏色資源。
      android:gradientRadius
      浮點型。漸變的半徑。僅在 android:type="radial" 時適用。
      android:startColor
      顏色。起始顏色,表示為十六進制值或顏色資源。
      android:type
      關鍵字。要應用的漸變圖案的類型。有效值為:
      說明
      "linear" 線性漸變。這是默認值。
      "radial" 徑向漸變。起始顏色為中心顏色。
      "sweep" 流線型漸變。
      android:useLevel
      布爾值。如果此屬性用作 LevelListDrawable,則值為“true”。
      <padding>
      要應用到包含視圖元素的內(nèi)邊距(這會填充視圖內(nèi)容的位置,而非形狀)。

      屬性:

      android:left
      尺寸。左內(nèi)邊距,表示為尺寸值或尺寸資源
      android:top
      尺寸。上內(nèi)邊距,表示為尺寸值或尺寸資源
      android:right
      尺寸。右內(nèi)邊距,表示為尺寸值或尺寸資源
      android:bottom
      尺寸。下內(nèi)邊距,表示為尺寸值或尺寸資源
      <size>
      形狀的大小。

      屬性:

      android:height
      尺寸。形狀的高度,表示為尺寸值或尺寸資源
      android:width
      尺寸。形狀的寬度,表示為尺寸值或尺寸資源

      :默認情況下,形狀根據(jù)此處定義的尺寸,按比例縮放至容器視圖的大小。在 ImageView 中使用形狀時,您可將 android:scaleType 設置為 "center",從而限制縮放。

      <solid>
      用于填充形狀的純色。

      屬性:

      android:color
      顏色。應用于形狀的顏色,以十六進制值或顏色資源表示。
      <stroke>
      形狀的筆劃中線。

      屬性:

      android:width
      尺寸。線寬,以尺寸值或尺寸資源表示。
      android:color
      顏色。線的顏色,表示為十六進制值或顏色資源
      android:dashGap
      尺寸。短劃線的間距,以尺寸值或尺寸資源表示。僅在設置了 android:dashWidth 時有效。
      android:dashWidth
      尺寸。每個短劃線的大小,以尺寸值或尺寸資源表示。僅在設置了 android:dashGap 時有效。
      示例:
      XML 文件保存在 res/drawable/gradient_box.xml 中:
      <?xml version="1.0" encoding="utf-8"?>
      <shape xmlns:android="http://schemas.android.com/apk/res/android"
          android:shape="rectangle">
          <gradient
              android:startColor="#FFFF0000"
              android:endColor="#80FF00FF"
              android:angle="45"/>
          <padding android:left="7dp"
              android:top="7dp"
              android:right="7dp"
              android:bottom="7dp" />
          <corners android:radius="8dp" />
      </shape>
      

        

       
       

      此布局 XML 會將形狀可繪制對象應用到視圖:

      <TextView
          android:background="@drawable/gradient_box"
          android:layout_height="wrap_content"
          android:layout_width="wrap_content" />
      

        

       
       

      此應用代碼會獲取形狀可繪制對象,并將其應用至視圖:

      java代碼:
      
      Resources res = getResources();
      Drawable shape = ResourcesCompat.getDrawable(res, R.drawable.gradient_box, getTheme());
      
      TextView tv = (TextView)findViewById(R.id.textview);
      tv.setBackground(shape);
      
      kotlin代碼:
      
      val shape: Drawable? = getDrawable(resources, R.drawable.gradient_box, getTheme())
      
      val tv: TextView = findViewById(R.id.textview)
      tv.background = shape
      

        

      posted @ 2020-04-02 14:24  王世楨  閱讀(170)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产av丝袜旗袍无码网站| 亚洲中文精品一区二区| 亚洲这里只有久热精品伊人| 亚洲国产精品第一二三区| 国产偷窥熟女精品视频大全 | 沙湾县| 免费视频欧美无人区码| 国内精品久久黄色三级乱| 欧美成人一卡二卡三卡四卡 | 亚洲av无码成人精品区一区| 国产av黄色一区二区三区| 九九热在线免费观看视频| 在线看国产精品自拍内射| 97久久精品人人做人人爽| 中文字幕一区二区三区久久蜜桃| 久久中文字幕av第二页| 国产乱弄免费视频观看| 国产成人综合色视频精品| 一区二区三区日本久久九| 青青青青国产免费线在线观看 | 美女黄18以下禁止观看| 亚洲中文字幕日产无码成人片| 成人免费亚洲av在线| 欧美成人精品| 国产小受被做到哭咬床单GV| 欧美性猛交xxxx乱大交极品| 国产一区二区三区美女| 狠狠亚洲色一日本高清色| 欧美一区二区| 大又大又粗又硬又爽少妇毛片| 久久精品免视看国产成人| 一二三四免费中文字幕| 秋霞av鲁丝片一区二区| 黄色亚洲一区二区在线观看| 香港日本三级亚洲三级| 天堂国产一区二区三区| 高清无打码一区二区三区| 91精品国产老熟女在线| 在线观看国产一区亚洲bd| 光棍天堂在线手机播放免费| 国产精品精品一区二区三|