用程式碼來實現selector
平常我們都是用xml來建立編寫selector,最近由於專案需要,需要載入網路圖片,問題來了,既要設定drawableTop又要動態載入網路圖片?一開始想想沒招,後面查找了資料,發現我們平常寫的selector.xml其實也可以用程式碼實現,以下就是相關介紹:
selector.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/woman_icon_select"/> <item android:state_pressed="false" android:drawable="@drawable/woman_icon_default"/> </selector>
採用程式碼實現:
StateListDrawable drawable = new StateListDrawable(); Drawable selected = context.getResources().getDrawable(R.drawable.woman_icon_select); Drawable unSelected = context.getResources().getDrawable(R.drawable.woman_icon_default); drawable.addState(new int[]{android.R.attr.state_pressed}, selected); drawable.addState(new int[]{-android.R.attr.state_pressed}, unSelected); tv.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
-android.R.attr.state_presses前面加負號代表xml中android:state_pressed="false"
注意裡面的“-”號,當XML的設定是false時,就需要使用資源符號的負值來設定。
載入網路圖片,記得不能主執行緒里加載轉化為Drawable,否則會導致異常:
new AsyncTask<Void, Void, Drawable>() { @Override protected Drawable doInBackground(Void... params) { StateListDrawable drawable = new StateListDrawable(); Drawable selected = loadImageFromNetwork("http://img0.imgtn.bdimg.com/it/u=919099284,2188508604&fm=15&gp=0.jpg"); Drawable unSelected = loadImageFromNetwork("http://img14.360buyimg.com/n4/g15/M00/04/01/rBEhWlLorJcIAAAAAAKhgJm7YvkAAIPwAI8vyUAAqGY603.jpg"); drawable.addState(new int[]{android.R.attr.state_pressed}, selected); drawable.addState(new int[]{}, unSelected); return drawable; } @Override protected void onPostExecute(Drawable drawable) { super.onPostExecute(drawable); tv.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null); } }.execute();//通過網路地址轉為Drawable
private Drawable loadImageFromNetwork(String address) { Drawable drawable = null; try { drawable = Drawable.createFromStream(new URL(address).openStream(), "image.jpg"); } catch (IOException e) { Log.d("test", e.getMessage()); } return drawable; }
相關推薦
用程式碼來實現selector
平常我們都是用xml來建立編寫selector,最近由於專案需要,需要載入網路圖片,問題來了,既要設定drawableTop又要動態載入網路圖片?一開始想想沒招,後面查找了資料,發現我們
怎麼理解用程式碼來實現資料結構
怎麼能更好的用程式碼實現資料結構內容? 個人理解為:1.首先要掌握資料結構的邏輯,也就是說要知道資料結構是怎麼實現的。這一點達不到的話,後面根本就無從談起。 &nbs
所謂的網頁爬蟲用java程式碼來實現,此程式碼適合在maven專案中使用中使用,因為,程式碼中的類所對應的依賴可以讓maven下載。
//獲得httpClient物件 CloseableHttpClient httpClient = HttpClients.createDefault(); //url公司域名隨便 String url = "https://www.baidu.co
用Jquery來實現點擊事件等的功能
點擊事件 image alt logs ima log ges query images 用Jquery來實現點擊事件等的功能
用openpyxl來實現99乘法表
python openpyxl openpyxl作為excel眾多的一員,具有簡單易用,功能廣泛的特點。環境: win 10 python 3.6 pip 9.0.1 openpyxl 2.4.8安裝openpyxl 打開cmd命令行,輸入pip install
[LeetCode] 232. Implement Queue using Stacks 用棧來實現隊列
logs not IT pty HA 實現 AC ted .cn Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of
用js來實現那些數據結構(數組篇01)
指定 賦值 重要 原始類型 delete 號稱 如果 開發 實現原理 在開始正式的內容之前,不得不說說js中的數據類型和數據結構,以及一些比較容易讓人混淆的概念。那麽為什麽要從數組說起?數組在js中是最常見的內存數據結構,數組數據結構在js中擁有很多的方法,很多初學者
232 Implement Queue using Stacks 用棧來實現隊列
whether light 操作 move bool problem rem http rip 使用棧來實現隊列的如下操作: push(x) -- 將一個元素放入隊列的尾部。pop() -- 從隊列首部移除元素。peek() -- 返回隊列首部的元素。empty() --
用js來實現那些數據結構10(集合02-集合的操作)
交集 學習 href targe 更改 分類 擁有 ren log 前一篇文章我們一起實現了自定義的set集合類。那麽這一篇我們來給set類增加一些操作方法。那麽在開始之前,還是有必要解釋一下集合的操作有哪些。便於我們更快速的理解代碼。 1、並集:對於給定的兩個集合
用js來實現那些數據結構11(字典)
完成 str function .get 自己的 items 結構 AR pre 我們這篇文章來說說Map這種數據結構如何用js來實現,其實它和集合(Set)極為類似,只不過Map是【鍵,值】的形式存儲元素,通過鍵來查詢值,Map用於保存具有映射關系的數據,Map裏保存
用js來實現那些數據結構14(樹02-AVL樹)
PE 有一個 解決 講解 html 16px var map 操作 在使用二叉搜索樹的時候會出現 一個問題,就是樹的一條分支會有很多層,而其他的分支卻只有幾層,就像下面這樣: 如果數據量夠大,那麽我們在某條邊上進行增刪改查的操作時,就會消耗大量的時間。我們花費精力
用js來實現那些數據結構15(圖01)
ice ring repeat fan lB tool ati ges lba 其實在上一篇介紹樹結構的時候,已經有了一些算法的相關內容介入。而在圖這種數據結構下,會有更多有關圖的算法,比如廣度優先搜索,深度優先搜索最短路徑算法等等。這是我們要介紹的最後一個數據結構。同時也
用Vue來實現音樂播放器(十六):滾動列表的實現
com 作用 efault nor 大小 -s stylus BE ack 滾動列表是一個基礎組件 他是基於scroll組件實現的 在base文件夾下面創建一個list-view文件夾 裏面有list-view.vue組件 <template>
用Vue來實現音樂播放器(十八):右側快速入口點擊高亮
為我 UC 沒有 short cut this 必須 左右 png 問題一:當我們點擊右側快速入口的時候 被點擊的地方高亮 首先我們要知道右側快速入口是為什麽高亮??因為當watch()監控到scrollY的變化了的時候 將scrollY的值和listHeight相比較
用Vue來實現音樂播放器(八):自動輪播圖啊
-s AR better hold ons ntp next start upd slider.vue組件的模板部分 <template> <div class="slider" ref="slider"> <div class=
用Vue來實現音樂播放器(九):歌單數據接口分析
QQ 插件 但是 之間 nbsp 跨域問題 前端 代理服務 一點 z這裏如果我們和之前獲取輪播圖的數據一樣來獲取表單的數據 發現根本獲取不到 原因是qq音樂在請求頭裏面加了authority和refer等 但是如果我們通過jsonp實現跨域
用Vue來實現音樂播放器(三十八):歌詞滾動列表的問題
vue 三十八 pla -s toggle 情況 TP 解決辦法 暫停 1、頻繁切換歌曲時,歌詞會跳來跳去 原因: // 歌詞跳躍是因為內部有一個currentLyric對像內部有一些功能來完成歌詞的跳躍 //每個currentLyric能實現歌曲的播放跳到相應的位置 是
用Vue來實現音樂播放器(四十):歌單詳情頁布局以及Vuex實現路由數據通訊
二級 font 利用 imp 實現 map color 音樂 image 1、歌單詳情頁是推薦頁面的二級路由頁面 將推薦頁面歌單的數據傳到歌曲詳情頁面 利用vuex 1、首先在state下定義一個歌單對象 disc{} 2、在mutaions
用程式碼來解釋可迭代性,迭代器,生成器的區別
一. 創造器(creator) 這是我自己造的一個名詞,因為在python術語中,對只實現了__next__()方法的物件,好像沒有任何名分,為了說明,我將只實現了__next__()方法的物件稱為創造器(creator)。 class O_Next: def __init__(se
用程式碼來畫畫 —— Ray-Marching(光線步進) 多個立體圖形的繪製【GLSL】
參考自: iq 的 https://www.shadertoy.com/view/Xds3zN http://www.iquilezles.org/www/articles/distfunctions/distfunctions.htm http://www.iq