導航:首頁 > 操作系統 > androiddrawable對象

androiddrawable對象

發布時間:2023-01-12 17:15:45

android Bitmap 與 Drawable之間的區別和轉換

Android bitmap和drawable的區別和轉換如下:

1.bitmap 轉換 drawable

java">Bitmapbitmap=newBitmap(...);Drawabledrawable=newBitmapDrawable(bitmap);
//Drawabledrawable=newFastBitmapDrawable(bitmap);

2.Drawable to Bitmap
BitmapDrawable, FastBitmapDrawable直接用getBitmap
b. 其他類型的Drawable用Canvas畫到一個bitmap上

Canvascanvas=newCanvas(bitmap)
drawable.draw(canvas);
Drawabled=ImagesList.get(0);Bitmapbitmap=((BitmapDrawable)d).getBitmap();

區別如下:

1.Bitmap - 稱作點陣圖,一般點陣圖的文件格式後綴為bmp,當然編碼器也有很多如RGB565、RGB888。作為一種逐像素的顯示對象執行效率高,但是缺點也很明顯存儲效率低。

2.Drawable - 作為Android平下通用的圖形對象,它可以裝載常用格式的圖像,比如GIF、PNG、JPG,當然也支持BMP,當然還提供一些高級的可視化對象,比如漸變、圖形等。

另外還有如下相類似的格式:

Canvas - 名為畫布,可以看作是一種處理過程,使用各種方法來管理Bitmap、GL或者Path路徑,同時它可以配合Matrix矩陣類給圖像做旋轉、縮放等操作,同時Canvas類還提供了裁剪、選取等操作。

Paint - 可以把它看做一個畫圖工具,比如畫筆、畫刷。管理了每個畫圖工具的字體、顏色、樣式。

㈡ Android,想獲取這個對象裡面的Drawable應該使用那個方法

Drawable drawable=getResource().getDrawable(R.drawable.xxx);

這個例子來源於android學習手冊,360手機助手中可以下載,裡面有108個android例子,源碼文檔都可在裡面看,下面是截圖


方式一:

已將圖片保存到drawable目錄下,通過圖片id獲得Drawable或者Bitmap,此方式最常用。(若只知道圖片的名稱,還可以通過圖片的名稱獲得圖片的id)

(1)通過圖片id獲得Drawable

Drawable drawable=getResource().getDrawable(R.drawable.xxx);

(2)通過圖片id獲得Bitmap

Resource res=gerResource();

Bitmap bitmap=BitmapFactory.decodeResource(res, id);

(3)通過圖片的名稱獲得圖片的id(兩種方法)

int id =res.getIdentifier(name, defType, defPackage); //name:圖片的名,defType:資源類型(drawable,string。。。),defPackage:工程的包名

Drawable drawable=getResource().getDrawable(id);

方式二:

已將圖片保存到assest目錄下,知道圖片的名稱,通過inputstream獲得圖片Drawabl

或者 Bitmap

AssetManager asm=getAssetMg();

InputStream is=asm.open(name);//name:圖片的名稱

(1)獲得Drawable

Drawable da = Drawable.createFromStream(is, null);

(2)獲得Bitmap

Bitmap bitmap=BitmapFactory.decodeStream(is);

方式三: 圖片保存在sdcard,通過圖片的路徑h

/圖片路徑

String imgFilePath = Environment.getExternalStorageDirectory().toString()

+ 「/DCIM/device.png」;

㈢ Android視圖開發中,layer-list\item\clip\shape等標簽對應不同的Drawable對象,是什麼意思

shape和selector是Android UI設計中經常用到的,比如我們要自定義一個圓角Button,點擊Button有些效果的變化,就要用到shape和selector。可以這樣說,shape和selector在美化控制項中的作用是至關重要的。
1.Shape

簡介

作用:XML中定義的幾何形狀
位置:res/drawable/文件的名稱.xml
使用的方法:

Java代碼中:R.drawable.文件的名稱
XML中:Android:background="@drawable/文件的名稱"
屬性:

<shape> Android:shape=["rectangle" | "oval" | "line" | "ring"]
其中rectagle矩形,oval橢圓,line水平直線,ring環形
<shape>中子節點的常用屬性:
<gradient> 漸變
Android:startColor 起始顏色
Android:endColor 結束顏色
Android:angle 漸變角度,0從上到下,90表示從左到右,數值為45的整數倍默認為0;
Android:type 漸變的樣式 liner線性漸變 radial環形漸變 sweep
<solid > 填充
Android:color 填充的顏色
<stroke > 描邊
Android:width 描邊的寬度
Android:color 描邊的顏色
Android:dashWidth 表示'-'橫線的寬度
Android:dashGap 表示'-'橫線之間的距離
<corners > 圓角
Android:radius 圓角的半徑 值越大角越圓
Android:topRightRadius 右上圓角半徑
Android:bottomLeftRadius 右下圓角角半徑
Android:topLeftRadius 左上圓角半徑
Android:bottomRightRadius 左下圓角半徑
<padding >填充
android:bottom="1.0dip" 底部填充
android:left="1.0dip" 左邊填充
android:right="1.0dip" 右邊填充
android:top="0.0dip" 上面填充

2.Selector
簡介

根據不同的選定狀態來定義不同的現實效果
分為四大屬性:
android:state_selected是選中
android:state_focused是獲得焦點
android:state_pressed是點擊
android:state_enabled是設置是否響應事件,指所有事件

android:state_window_focused默認時的背景圖片

引用位置:res/drawable/文件的名稱.xml
使用的方法:
Java代碼中:R.drawable.文件的名稱
XML中:Android:background="@drawable/文件的名稱"

[java] view plain
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:Android="http://schemas.android.com/apk/res/android">
<!-- 默認時的背景圖片-->
<item Android:drawable="@drawable/pic1" />
<!-- 沒有焦點時的背景圖片 -->
<item
Android:state_window_focused="false"
android:drawable="@drawable/pic_blue"
/>
<!-- 非觸摸模式下獲得焦點並單擊時的背景圖片 -->
<item
Android:state_focused="true"
android:state_pressed="true"
android:drawable= "@drawable/pic_red"
/>
<!-- 觸摸模式下單擊時的背景圖片-->
<item
Android:state_focused="false"
Android:state_pressed="true"
Android:drawable="@drawable/pic_pink"
/>
<!--選中時的圖片背景-->
<item
Android:state_selected="true"
android:drawable="@drawable/pic_orange"
/>
<!--獲得焦點時的圖片背景-->
<item
Android:state_focused="true"
Android:drawable="@drawable/pic_green"
/>
</selector>

3.layer-list
簡介:
將多個圖片或上面兩種效果按照順序層疊起來
例子:

[java] view plain
<?xml version="1.0" encoding="UTF-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<!--圖片1-->
<item android:id="@+id/user_faceback_drawable"
android:drawable="@drawable/faceback" />
<!--圖片2-->
<item android:id="@+id/user_face_drawable"
android:drawable="@drawable/h001"
android:left="10.0dip"
android:top="18.0dip"
android:right="25.0dip"
android:bottom="35.0dip" />
</layer-list>
<!--2個圖片的疊加-->

效果圖:

㈣ android 獲取當前壁紙的Drawable對象或者Bitmap。如何獲取這張圖片的ID或者名稱。

如果圖片放在android的資源文件夾中,就用反射,獲取他的名字,然後自己去截取、反射應該懂吧。。如果不是,在本地的文件夾、就更簡單了,直接用文件獲取名字。如果不懂反射就M。。

㈤ Android中drawableStart和drawableLeft的區別

drawableLeft就是指左邊
drawableStart指文字閱讀開始的方向,也就是我們閱讀的方向,在大部分國家是自左向右的閱讀方式,此時drawableStart就相當於drawableLeft,但有些文化,像阿拉伯等是從右到左的,此時就相當於drawableRight,

不只這個屬性,其他方向性屬性都有start和end,如marginLeft,layout_toStartOf,layout_alignStart等等
Android 從4.2開始引入了由右到左文字的全面本地支持布局。在本地RTL支持下,可以為所有用戶帶來完美的應用體驗,不論他們的文字書寫方向是由左至右還是由右至左。
當用戶切換系統語言到由右至左書寫方式時,系統提供自動的應用UI布局和所有可視組件的鏡像,包括文字元素的顯示和輸入。
應用僅需極少改變即可支持RTL布局鏡像。如果應用支持這一特性,只要在應用的manifest文件中將所有的」left/right」布局屬性改變為對應的」start/end」即可。系統就會根據需要處理UI

閱讀全文

與androiddrawable對象相關的資料

熱點內容
加密晶元的計算方法 瀏覽:187
手機存儲為什麼找不到微信文件夾 瀏覽:695
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:143
鐵路app怎麼買火車票 瀏覽:309
移魅族除的app怎麼添加 瀏覽:240
兔籠子大號加密 瀏覽:171
單片機程序燒錄操作成功 瀏覽:878
指標高拋低吸點位源碼 瀏覽:205
25匹壓縮機銅管 瀏覽:570
單片機單燈左移05 瀏覽:150
買伺服器練手什麼配置 瀏覽:783
伺服器被毀該怎麼辦 瀏覽:939
python私有庫 瀏覽:514
Python有中文嗎 瀏覽:736
麥塊的伺服器為什麼都進不去 瀏覽:474
新買的伺服器如何打開 瀏覽:35
安卓軟體游戲怎麼開發 瀏覽:319
用撲克擺愛心解壓神器怎麼擺 瀏覽:70
松下製冷壓縮機 瀏覽:275