作者afz096 (我被淡水的路宠坏了)
看板AndroidDev
标题Re: [问题] 关於imageView资源文件
时间Fri May 6 09:40:56 2011
就我知道的内容,讨论一下,希望能抛砖引玉,
若有谬误及不足,也请用力指正:)
※ 引述《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