亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解Android中Drawable方法

 更新時(shí)間:2016年05月08日 23:18:37   作者:麒麟牙  
這篇文章主要為大家詳細(xì)介紹了Android中Drawable方法,感興趣的朋友可以參考一下

本文為大家分享了Android中Drawable方法的詳細(xì)使用方法,供大家參考,具體內(nèi)容如下

1. BitmapDrawable相關(guān)方法:

新建在drawable目錄下面,示例如下:

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
  android:antialias="true"
  android:dither="true"
  android:filter="true"
  android:gravity="center"
  android:mipMap="false"
  android:src="@drawable/ic_launcher"
  android:tileMode="disabled" /> 

具體每個(gè)屬性的解釋如下:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
  <!-- 圖片抗鋸齒效果,開啟后會讓圖片變平滑,也可以在一定程度上降低圖片分辨率(幅度可忽略) -->
  android:antialias="true"
  <!-- 是否開啟抖動效果,開啟這個(gè)選項(xiàng)可以染高質(zhì)量的圖片在低質(zhì)量的屏幕下還能較好的顯示 -->
  android:dither="true"
  <!-- 是否開啟過濾,開啟可以保持較好的顯示效果 -->
  android:filter="true"
  <!-- 圖片重力控制,可以控制圖片位置,也可以通過“|”來組合使用:
      top          圖片放到頂部,不改變圖片大小
      bottom        圖片放到底部,不改變大小
      left        圖片放到左邊,不改變大小
      right        圖片放到右邊,不改變大小
      center_vertical    使圖片豎直居中,不改變大小
      fill_vertical    圖片豎直方向充滿整個(gè)容器
      center_horizontal  圖片水平方向居中,不改變圖片大小
      fill_horizontal    圖片水平方向充滿
      center        圖片中間居中  
      fill        圖片充滿容器,這個(gè)是默認(rèn)值
      clip_vertical    附加選項(xiàng),表示豎直方向的裁剪,較少使用
      clip_horizontal    附加選項(xiàng),便是水平方向的裁剪,較少使用
   -->
  android:gravity="center"
  <!-- 紋理映射,一遍為false -->
  android:mipMap="false"
  <!-- 圖片的數(shù)據(jù)源 -->
  android:src="@drawable/ic_launcher"
  <!-- 有如下幾個(gè)值,對應(yīng)的方式如下:
    disabled  默認(rèn)模式,關(guān)閉平鋪
    repeat    加單的水平和豎直方向平鋪
    mirror    一種在水平和豎直方向的鏡面投影效果
    clamp    四周像素?cái)U(kuò)散到周圍區(qū)域 -->
  android:tileMode="disabled" /> 

上述的排版方式只是為了方便查看,不能直接復(fù)制到代碼中使用

2. ShapeDrawable,純色、漸變色的drawable

基本示例代碼:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle">
  <corners
    android:bottomLeftRadius="1px"
    android:bottomRightRadius="1px"
    android:radius="2px"
    android:topLeftRadius="1px"
    android:topRightRadius="1px" />
  <gradient
    android:angle="5"
    android:centerColor="#ff789434"
    android:centerX="x"
    android:centerY="y"
    android:endColor="#34234324"
    android:gradientRadius="55dp"
    android:startColor="#ff783247"
    android:type="linear"
    android:useLevel="true" />
  <padding
    android:bottom="5dp"
    android:left="5dp"
    android:right="5dp"
    android:top="5dp" />
  <size
    android:width="70dp"
    android:height="70dp" />
  <solid android:color="#fffff333" />
  <stroke
    android:width="30dp"
    android:color="#33333333"
    android:dashGap="4dp"
    android:dashWidth="4dp" />
</shape>

各個(gè)標(biāo)簽詳細(xì)說明:

<shape>表示圖像形狀

表示圖形形狀,有四個(gè)選項(xiàng)rectangle(矩形)、oval(橢圓)、line(橫線)、ring(圓環(huán)),默認(rèn)是矩形。在使用line和ring時(shí)候需要通過stroke屬性來指定線的寬度和顏色,否則顯示效果將會異常。
當(dāng)設(shè)置ring時(shí),有五個(gè)特殊的屬性,對應(yīng)如下:
android:innerRadius——圓環(huán)內(nèi)半徑,和innerRadiusRatio同時(shí)存在時(shí),以innerRadius為準(zhǔn)。
android:thickness——圓環(huán)的厚度,及外半徑減去內(nèi)半徑
android:innerRAdiusRatio——內(nèi)半徑占整個(gè)drawable的寬度比例,默認(rèn)為9
android:thicknessRadio——厚度咱整個(gè)Drawable的比例,默認(rèn)為3,計(jì)算方式為厚度=寬度/n
android:useLevel——一般都應(yīng)該使用false,除非被當(dāng)做LevelListDrawable來使用時(shí)候

<corners>(四個(gè)角角度,適用于矩形)

表示shape的四個(gè)角的角度。它只試用與矩形,角度值的是圓角的程度,用px來表示。其中radius用來為四個(gè)角同意設(shè)置角度,優(yōu)先級比較低。topLeftRadius、topRightRadius、bottomLeftRadius、bottomRightRadius分別表示左上、右上、左下、右下角的角度。

<gradient>(顏色漸變)

表示漸變填充,它與標(biāo)簽互斥,包含的幾個(gè)屬性值意義如下:
android:angle——漸變角度,默認(rèn)為零,值必須為45的倍數(shù)。
android:centerX——漸變中心點(diǎn)橫坐標(biāo)
android:centerY——漸變中心點(diǎn)縱坐標(biāo)
android:startColor——漸變起始顏色
android:centerColor——漸變的中間色
android:endColor——漸變的結(jié)束色
android:gradientRadius——漸變半徑
android:useLevel——一般為false,僅當(dāng)android:type=”radial”
android:type——漸變的類型,有個(gè)linear(線性漸變)、radial(徑向漸變)、sweep(掃描線漸變)三種,其中默認(rèn)為線性漸變

<solid>(純色填充)

通過android:color既可指定shape中填充的顏色

<stroke>(描邊屬性)

包含以下常用標(biāo)簽:
android:width——描邊的寬度,越大則shape的邊緣就會看起來越粗
android:color——描邊的顏色
android:dashWidth——組成虛線的線段的寬度
android:dashGap——組成虛線的線段之間的間隔,間隔越大空隙越大

<padding>內(nèi)邊距

可以理解為內(nèi)邊距,使用起來和直接在view中加邊距類似包含四個(gè)屬性:android:top、android:bottom、android:left和android:right,分別表示上下左右內(nèi)邊距。

<size>

有兩個(gè)屬性android:width和android:height,表示該view的寬高,類似圖片本身的寬高,在view中會視情況拉伸。

3. LayerDrawable層次化的Drawable,類似圖層

多個(gè)drawable的集合,類似圖層概念,通過將不同的drawable放置在不同的層上面從而達(dá)到一種疊加后的效果,它的語法規(guī)則如下:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    android:id="@+id/item1"
    android:bottom="1dp"
    android:drawable="@drawable/ic_launcher"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp">
  </item>
</layer-list> 

一個(gè)layer-list可以包含多個(gè)item,每個(gè)item表示一個(gè)drawable。上下左右是個(gè)屬性表示Drawable相對于view的上下左右偏移量,單位為像素??梢酝ㄟ^drawable來直接引用一個(gè)drawable資源。也可以直接在item標(biāo)簽下自定義drawable。
默認(rèn)情況下,layer-list中所有的drawable都會被縮放到view的大小。layer-list有層次概念,下面的drawable會覆蓋上面的drawable。通過合理分層,可以實(shí)現(xiàn)一些特殊的疊加效果。

4. StateListDrawable(選擇器)

選擇器標(biāo)簽,對應(yīng)的標(biāo)簽是<selector>,也是一個(gè)drawable的集合,常用來根據(jù)當(dāng)前狀態(tài)改變顏色。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" 
  <!-- 是否會隨著狀態(tài)的改變而改變,默認(rèn)為false,表示會隨著改變 -->
  android:constantSize="true" 
  <!-- 是否開啟抖動,開啟可以在低分辨率手機(jī)上獲得較好的顯示,建議為true -->
  android:dither="true" 
  <!-- 是否隨著狀態(tài)而改變內(nèi)邊距,建議為true -->
  android:variablePadding="true">
  <item 
    <!-- 對應(yīng)的drawable -->
    android:drawable="@drawable/ic_launcher"
    <!-- 按下狀態(tài),比如button按下未松開 -->
    android:state_pressed="true"
    <!-- 表示View已經(jīng)獲得焦點(diǎn) -->
    android:state_focused="true"
    <!-- 光標(biāo)是否懸停,4.0以后特性 -->
    android:state_hovered="true"
    <!-- 表示用戶選擇了view -->
    android:state_selected="true"
    <!-- 表示組件是否能被選中,如RadioButton -->
    android:state_checkable="true"
    <!-- 表示用戶選中了view,一般用于選擇按鈕 -->
    android:state_checked="true"
    <!-- 表示view當(dāng)前處于可用狀態(tài) -->
    android:state_enabled="true"
    <!-- 表示view處于激活狀態(tài) -->
    android:state_activated="true"
    <!-- 應(yīng)用程序是否在前臺 -->
    android:state_window_focused="true">
   </item>
</selector> 

注意:如果有多個(gè)item,那么程序?qū)⒆詣訌纳系较逻M(jìn)行匹配,最先匹配的將得到應(yīng)用。(不是通過最佳匹配)如果一個(gè)item沒有任何的狀態(tài)說明,那么它將可以被任何一個(gè)狀態(tài)匹配。所以默認(rèn)的item應(yīng)該放到最后一條,否則會導(dǎo)致下邊的選項(xiàng)沒有效果。

5. LevelListDrawable(不同等級切換不同drawable)

LevelListDrawable對應(yīng)于<level-list>標(biāo)簽,用來表示一個(gè)drawable集合。集合中每一個(gè)drawable都一個(gè)等級,根據(jù)不同的等級,LevelListDrawable會切換為對應(yīng)的Drawable,具體詳情如下:

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    <!-- 對應(yīng)的drawable -->
    android:drawable = "@drawable/ic_lunch"
    <!-- 最大等級 -->
    android:maxLevel = "2"
    <!-- 最小等級 -->
    android:minLevel = "1">
    <!-- 在最大和最小等級之間的等級會對應(yīng)此item中的Drawable,當(dāng)它作為view的背景時(shí)候,可以通過
    Drawable的setLevel方法來設(shè)置不同的等級,從而切換具體的drawable。還可以通過ImageView的
    setImageLevel方法來切換,等級范圍是0到10000,0是默認(rèn)值 -->
  </item>
</level-list>

6. TransitionDrawable(可實(shí)現(xiàn)淡入淡出)

對應(yīng)的是<transition>標(biāo)簽,用于實(shí)現(xiàn)兩個(gè)drawable之間淡入淡出的效果,具體使用方法如下

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android" >
  <item
    <!-- 對應(yīng)的drawable -->
    android:drawable = "@drawable/ic_lunch"
    <!-- 對應(yīng)的id -->
    android:id = "@+id/item1"
    <!-- drawable四周的偏移量 -->
    android:top = "1dp"
    android:right = "1dp"
    android:bottom = "1dp"
    android:left = "1dp">
  </item>
</transition>

使用方式:

定義漸變

<?xml version="1.0" encoding="utf-8"?>
<transition
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/drawable1" />
  <item android:drawable="@drawable/drawable" />
</transition>

將漸變添加到背景

<TextView
android:id = "@+id/button"
andoird:layout_height = "wrap_content"
android:layout_width = "wrap_content"
android:background = "@drawable/transition_drawable"
/>

在代碼中控制

TextView textView = (TextView)findViewById(R.id.button);
TransitionDrawable drawable = (TransitionDrawable)textView.getBackground();
drawable.startTransition(1000);

7. InsetDrawable(內(nèi)嵌一個(gè)Drawable)

可以將Drawable內(nèi)嵌到自己內(nèi)部,并在四周留出空隙,一般用在希望自己背景比自己實(shí)際區(qū)域小的view中。

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
  <!-- 對應(yīng)的Drawable,也可以直接寫在內(nèi)部 -->
  android:drawable="@drawable/ic_launcher"
  <!-- Drawable距離四周的邊距 -->
  android:insetBottom="2dp"
  android:insetLeft="2dp"
  android:insetRight="2dp"
  android:insetTop="2dp" >
  <!-- 內(nèi)部用來放置對應(yīng)的Drawable,也可以直接在上邊引用 -->
</inset> 

8. ScaleDrawable(縮放類,可以縮?。?/strong>

對應(yīng)的代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
  <!-- 對應(yīng)的Drawable -->
  android:drawable="@drawable/ic_launcher"
  <!-- 顯示的位置 -->
  android:scaleGravity="center"
  <!-- 對應(yīng)的縮放比例 -->
  android:scaleHeight="50%"
  android:scaleWidth="50%" >
</scale> 

在使用時(shí)時(shí)候必須設(shè)置Drawable的級別,否則無法使用,設(shè)置級別的代碼如下:

View testScale = findViewById(R.id.test_scale);
scaleDrawable testScaleDrawable = (ScaleDrawable)testScale.getBackground();
testScaleDrawable.setLevel(1);//范圍是1~10000,只要不為零就可以

9. ClipDrawable(根據(jù)不同設(shè)置裁剪Drawable)

可以根據(jù)當(dāng)前等級來裁剪另一個(gè)Drawable,具體的代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
  <!-- 裁剪方向,水平或豎直 -->
  android:clipOrientation="horizontal"
  android:drawable="@+id/icon"
  <!-- 和clipOrientation配合使用,詳情見下面說明-->
  android:gravity="top" >
</clip> 

top——放置到頂部,如果為豎直裁剪,那么從底部開始裁剪
bottom——放到底部,如果為豎直裁剪,那么從頂部開始裁剪
left——放到左邊,如果為水平裁剪,那么從右開始裁剪(此為默認(rèn))
right——放到右邊,若為水平裁剪,那么從左邊開始裁剪
center_vertical——豎直居中,豎直裁剪時(shí),上下同時(shí)裁剪
fill_vertical——豎直方向填充,如果為豎直裁剪,僅當(dāng)clipDrawable等級為0時(shí)(此時(shí)不可見,為完全裁剪),才有裁剪行為
(水平方向也具有和豎直類似的屬性,對應(yīng)為center_horizontal和fill_horizontal,用法與上面兩個(gè)類似)
center——中部居中,豎直裁剪時(shí)上下同時(shí)減,水平裁剪時(shí)左右同時(shí)減
fill——充滿整個(gè)drawable,當(dāng)clipDrawable等級為零時(shí)有效
clip_vertical——附加選項(xiàng),表豎直方向裁剪
clip_horizontal——附加選項(xiàng),表豎直方向裁剪

使用時(shí)候需要在代碼中設(shè)置等級具體代碼如下

ImageViwe testClip = (ImageView)findViewById(R.id.test_clip);
ClipDrawable testClipDrawable = (ClipDrawable)testClip.getDrawable();
//等級為從0到10000,等級0表示完全裁剪,等級10000表示不裁剪
testClipDrawable.setLevel(5000);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Android Alertdialog(實(shí)現(xiàn)警告對話框)

    Android Alertdialog(實(shí)現(xiàn)警告對話框)

    本篇文章主要介紹了Android Dialog對話框,具體實(shí)現(xiàn)了警告對話框的效果,有需要的可以了解一下。
    2016-11-11
  • Android自定義加載圈動畫效果

    Android自定義加載圈動畫效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義加載圈動畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android 以任意比例裁剪圖片代碼分享

    Android 以任意比例裁剪圖片代碼分享

    這篇文章主要介紹了Android 以任意比例裁剪圖片的相關(guān)資料,非貨不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Android編程使用自定義View實(shí)現(xiàn)水波進(jìn)度效果示例

    Android編程使用自定義View實(shí)現(xiàn)水波進(jìn)度效果示例

    這篇文章主要介紹了Android編程使用自定義View實(shí)現(xiàn)水波進(jìn)度效果,結(jié)合實(shí)例形式詳細(xì)分析了Android水波動畫效果的具體實(shí)現(xiàn)步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-01-01
  • flutter中的資源和圖片加載示例詳解

    flutter中的資源和圖片加載示例詳解

    這篇文章主要為大家介紹了flutter中的資源和圖片加載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Android編程UI設(shè)計(jì)之GridView和ImageView的用法

    Android編程UI設(shè)計(jì)之GridView和ImageView的用法

    這篇文章主要介紹了Android編程UI設(shè)計(jì)之GridView和ImageView的用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android中GridView和ImageView組件的相關(guān)方法使用技巧,需要的朋友可以參考下
    2016-01-01
  • 使用DrawerLayout完成滑動菜單的示例代碼

    使用DrawerLayout完成滑動菜單的示例代碼

    這篇文章主要介紹了使用DrawerLayout完成滑動菜單的示例代碼,代碼簡單易懂,非常不錯(cuò),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Android手勢左右滑動效果

    Android手勢左右滑動效果

    這篇文章主要為大家詳細(xì)介紹了Android手勢左右滑動效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android中drawable使用Shape資源

    Android中drawable使用Shape資源

    這篇文章主要為大家詳細(xì)介紹了Android中drawable使用Shape資源的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android隨機(jī)給出加減乘除的四則運(yùn)算算術(shù)題

    Android隨機(jī)給出加減乘除的四則運(yùn)算算術(shù)題

    這篇文章主要為大家詳細(xì)介紹了Android隨機(jī)給出加減乘除的四則運(yùn)算算術(shù)題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論