Re: [問題] 關於imageView資源文件
就我知道的內容,討論一下,希望能拋磚引玉,
若有謬誤及不足,也請用力指正:)
※ 引述《narwhalgary (獨角鯨葛瑞)》之銘言:
: 回來PO一下昨天的發現
: 一開始想用drawable作為條件,
: Drawable swordD = getResources().getDrawable(R.drawable.sword);
: //只能用在activity,自定義class不行,不知為何
getResources() 是 android.content.Context 的一個 function,
Activity 繼承 Context,所以 Activity 可以使用 getResources(),
自定義的 class 沒有繼承 Context,所以當然無法使用。
: imageUsing.getDrawable().equals(swordD);//原本想用這樣做比較,但是怎樣都無法
: true
: 後來發現drawable不知為何每次執行後用TextView顯示出來總是變來變去,
: 不適合拿來當作if-else的條件
getDrawable() 出來是 Drawable 的物件,用 TextView 顯示出來,
應該是呼叫了 toString() ,如果沒有複寫(override) toString(),則顯示的會是
物件名稱+物件的 hashcode。每次產生新的物件,當然 hashcode 都不一樣。
: 適合做為條件的恐怕只有R.drawable.XXX,
: 用TextView顯示出來為res/drawable/XXX.png
: 或是把上者用toString轉型
: private Integer[] mImageIds = { R.drawable.magic, R.drawable.sword,
: R.drawable.arrow };
: text4.setText(mImageIds[0].toString());
: 顯示出來的是一個固定的數字,似乎也可以當作條件
R.drawable.xxx 甚至是其他 R.layout.xxx,R.xxxx.xxx 其實都是 int
可以看 gen/package.name/R.java
: 至於兩張圖片的resource竟然會一模一樣,而且不會變,
: text2.setText(imageUsing.getResources().toString());
: text3.setText(image00.getResources().toString());
這個部份猜測是因為取出來的 Resources,是整個程式的 Resources,所以會一樣。
(沒有寫程式測試過,無法確認)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.216.235
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
AndroidDev 近期熱門文章
PTT數位生活區 即時熱門文章