導航:首頁 > 操作系統 > android創建drawable

android創建drawable

發布時間:2023-02-23 07:36:40

① 如何在android Studio中創建一個selector.xml文件

1、selector.xml屬於drawable文件夾下的用法,創建該文件時,首先在res文件夾下新建drawable文件夾

2、點擊drawable文件夾,滑鼠右鍵"New——>Drawable resource file",輸入文件名,選擇默認根標簽:selector

3、例子:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_red_corners_button_pressed"
android:state_pressed="true"/>
<item
android:drawable="@drawable/shape_red_corners_button"
android:state_pressed="false"/>
</selector>

② androidstudio怎麼創建drawable

右鍵res ->new resource directory 在resource type 選擇drawable 即可

③ Android繪圖基礎--Canvas和Drawable

Github鏈接

畫2D圖形有兩種方法:

Canvas實際上是封裝了各種draw方法的類,調用draw方法把圖形繪制到底層的Surface上,即繪制在Window上。

這個例子中構造了兩個Canvas和一個Bitmap,分別調用其draw方法,先是mCanvas往Bitmap里繪制一個方塊,再在onDraw方法內調用canvas.drawBitmap繪制這個方塊。

思考一個問題,為什麼mCanvas需要設置Bitmap?

很簡單,因為它沒有持有一塊內存地址,自然沒法繪制。來看一下draw的起點ViewRootImpl(軟體繪制,不開啟硬體加速下)。

這個通過mSurface.lockCanvas返回的Canvas是View.draw的canvas變數,所以當1,2情況時,Canvas都持有一個Bitmap,指向共享內存里的某一小塊,當調用Canvas.draw方法時就能繪制出東西。但對於自定義Canvas來說並不是,即使設置一個Bitmap和繪制了Bitmap,但不往共享內存上寫,屏幕上是不會顯示的,SurfaceView同理,通過Surface.lockCanvas獲取持有共享內存的Canvas,繪制完畢後調用Surface.unlockCanvasAndPost把繪制內容顯示到surface上並release掉Canvas。

順帶一提Canvas.save和Canvas.restore方法,如下Demo

效果圖如

畫的是三個顏色和旋轉角度都不同的小方形。

步驟1把默認坐標系旋轉20°,畫出第一個藍色的方形,步驟2保存當前的matrix(旋轉了20°),繼續旋轉20°,此時坐標系已經旋轉了40°,畫出第二個黃色的方塊,步驟3,恢復上一步保存的matrix(旋轉了20°),此時坐標系還是旋轉了20°,步驟4,再旋轉40°,此時坐標系旋轉了60°,畫出第三個黑色方塊。

Canvas.save用於保存當前matrix和clip,Canvas.restore用於恢復上次保存的matrix和clip。

Drawable是一個能畫出來的物體的抽象,使用前需要調用setBounds確定位置和大小,通過getIntrinsicHeight和getIntrinsicWidth取到實際大小。Drawable可以有幾種形式存在:Bitmap、Nine Patch、Vector、Shape、Layers等。

從Resource.getDrawable會判斷是否.xml結尾,不是的話走6,7步,如果從xml中讀取,需要getResource.getDrawable -> ResourceImpl.loadDrawableForCookie -> drawable.createFromXml -> DrawableInflater.inflateFromXmlForDensity -> drawable.inflateFromTag

看一下Shape實現類GradientDrawable的inflate實現,讀取各項屬性並賦值,到draw方法。

調用canvas.drawRect把mRect畫出來,而mRect的賦值在ensureValidRect。[圖片上傳失敗...(image-a25af0-1515826613001)]

bounds在哪裡設置的?答案是ImageView.updateDrawable內,會調用Drawable.getIntrinsicHeight賦值(從xml中size屬性讀取),再調用configureBounds -> setBounds,如果使用的不是ImageView,一定要在draw之前 調用setBounds ,否則size就會出錯。

回到loadDrawableForCookie,再看一下6,7步載入圖片的過程,通過AssetManager讀取圖片流數據,通過Drawable.createFromResourceStream這個我們經常使用的方法獲取到Drawable。

取到屏幕密度之後調用BitmapFactory.decodeResourcesStream,計算密度後調用native創建Bitmap,感興趣的同學可以看下更具體的分析文章(如 理解Bitmap )。

本文探究了兩點

Android 7.1.1 源碼

Android 官方文檔, Canvas and Drawable , Drawable 等

④ Android Studio怎麼新建selector的xml文件

1、selector.xml屬於drawable文件夾下的用法,創建該文件時,首先在res文件夾下新建drawable文件夾
2、點擊drawable文件夾,滑鼠右鍵"New——>Drawable resource file",輸入文件名,選擇默認根標簽:selector
3、例子:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/shape_red_corners_button_pressed"
android:state_pressed="true"/>
<item
android:drawable="@drawable/shape_red_corners_button"
android:state_pressed="false"/>
</selector>

⑤ android 怎麼生成drawable

通過 Resources 類來獲得項目資源 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.xxx); 二. 從 XML 文件來定義圖..Android中Drawable分類匯總_冶金/礦山/地質_工程科技_專業資料。Android中Drawable分類匯總And左可id把 制的對象抽象 D左awab從e, 的圖形圖像資源就代...

⑥ 如何玩轉Android矢量圖VectorDrawable

創建Vector Drawable
從相似角度來看,VectorDrawable與標准SVG圖形都是利用path值繪制完成的。不過如何利用SVG path繪制圖形並不在本篇文章的探討范圍之內,大家可以點擊此處從W3C網站處獲取必要的說明資料。在本文當中,我們只需要了解到path標簽的作用是進行圖形繪制即可。讓我們首先從SVG文件入手,看看以下圖形是如何被繪制出來的:
這一圖形共由五個主要部分所組成:
一個圓角四邊形作為CPU主體,該四邊形由兩條拱狀弧線構成。
四組各自包含五根線條的圖形,用於充當CPU的外延線路。

雖然看起來有點繁雜,但大家其實用不著糾結於以上代碼的具體含義,而且這完全不會影響到我們接下來要進行的VectorDrawable繪制工作。不過需要強調的是,我將前面提到的五大圖形組成部分在代碼中作為獨立的區塊來處理,這是為了增強代碼內容的可讀性。

⑦ 如何使用Android的VectorDrawable類繪制矢量圖

繪制矢量圖形非難事——如何使用Android的VectorDrawable類
內容概述
盡管Android系統並不能夠直接支持SVG(即可縮放矢量圖形),但Lollipop版本卻引入了一個名為VectorDrawable的新類,其允許設計人員及開發人員以純代碼方式生成類似的繪制效果。
在今天的文章中,我們將共同學習如何利用XML文件創建一個VectorDrawable,並將其以動畫方式顯示在自己的項目當中。這項功能只能在運行有Android 5.0或者更高版本的設備上實現,而且目前還不具備任何支持庫實現。本篇教程中的相關源文件可以通過GitHub網站獲取。
1. 創建Vector Drawable
從相似角度來看,VectorDrawable與標准SVG圖形都是利用path值繪制完成的。不過如何利用SVG path繪制圖形並不在本篇文章的探討范圍之內,大家可以點擊此處從W3C網站處獲取必要的說明資料。在本文當中,我們只需要了解到path標簽的作用是進行圖形繪制即可。讓我們首先從SVG文件入手,看看以下圖形是如何被繪制出來的:
這一圖形共由五個主要部分所組成:
一個圓角四邊形作為CPU主體,該四邊形由兩條拱狀弧線構成。
四組各自包含五根線條的圖形,用於充當CPU的外延線路。

⑧ Android如何由Uri創建Drawable

1、首先需根據URL地址獲取圖片,如下所示,urladdr即為圖片地址,返回Drawable對象:
private Drawable loadImageFromNetwork(String urladdr) {
Drawable drawable = null;
try{
drawable = Drawable.createFromStream(new URL(urladdr).openStream(), "image.jpg");
}catch(IOException e){
Log.d("test",e.getMessage());
}
return drawable;
}
2、獲取到圖片後,需要更新主線程UI資源,考慮到時間以及界面反應延遲等,所以採用線程加以處理,如下圖所示:
new Thread(new Runnable(){
Drawable drawable = loadImageFromNetwork(urladdress);
@Override
public void run(){
image.post(new Runnable(){
@Override
public void run(){
image.setImageDrawable(drawable);
}
});
}

private Drawable loadImageFromNetwork(String urladdr) {
//... 略(如 1 中所示)
}
}).start(); //線程啟動

⑨ android studio 怎樣 創建 drawable-xxhdpi 目錄

  1. 找到res目錄


  2. 其實在studio環境下開發 不需要創建這個目錄,可以直接把圖片放在mipmap-xxhdpi下,按照步驟3和4能找到這個目錄
閱讀全文

與android創建drawable相關的資料

熱點內容
12306哪個app 瀏覽:679
免費網站電視劇電影全免費在線觀看 瀏覽:737
如何快速清除app廣告 瀏覽:716
單片機按鍵外部中斷 瀏覽:560
單片機的usb供電 瀏覽:256
更改android解析度 瀏覽:186
phpstaticfinal 瀏覽:695
成人倫理風月片電影 瀏覽:294
禁播愛情片 瀏覽:21
動漫電影免費版大全 瀏覽:14
java什麼是this 瀏覽:811
拍攝指南by小說製造機txt下載 瀏覽:738
豆瓣pdf 瀏覽:723
春宮妖姬演員表 瀏覽:112
韓國情愛電影在線 瀏覽:812
程序員那麼可愛顧墨吃醋 瀏覽:201
伺服器未測速怎麼辦 瀏覽:15
男主角林晨的都市小說 瀏覽:899
百度文庫系統源碼nodejs 瀏覽:997
電影院正在上映的電影怎麼在家看 瀏覽:61