首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在回收器列表视图中更改ImageButton的两种外观的最佳实践: setImageBitmap vs setImageResource vs setImageDrawable

在回收器列表视图中更改ImageButton的两种外观的最佳实践: setImageBitmap vs setImageResource vs setImageDrawable
EN

Stack Overflow用户
提问于 2019-08-04 09:50:47
回答 1查看 82关注 0票数 -1

我是一个初学者,想知道在回收器列表视图中,setImageBitmap、setImageResource和setImageDrawable中的哪一个是在ImageButton的两个外观(状态)之间进行更改的最佳实践。就像安卓AlarmClock中的时钟符号一样,它有两种不同的状态,位于RecyclerView中:我需要10个声誉才能发布图像,所以这里有一个带有闹钟列表图片的网站:https://www.pctipp.ch/androidtipp/artikel/android-coole-wecker-features-in-samsung-und-aehnlichen-smartphones-81200/

对于类似的情况,我已经找到了一个公认的答案:setImageResource Vs setDrawable,它说setImageResource可能是最糟糕的解决方案,但如果我采用其他解决方案,比如我的ImageButton有问题,它就会失去原来的大小。更重要的是,它看起来还需要做更多的事情,比如"decodeResource“。我认为这对它的性能不好,因为它是针对每一行执行的。我知道setImageBitmap时总是会调用setImageDrawable,所以我认为setImageBitmap不是正确的答案。

这段代码是我的RecyclerView适配器中onBindViewHolder的一部分:

代码语言:javascript
复制
if (alarmAtPosition.isActive()){
    //Bitmap bm = BitmapFactory.decodeResource(Resources.getSystem(), R.drawable.ic_access_alarms_black_24dp);
    Drawable myDrawable = Resources.getSystem().getDrawable(R.drawable.ic_access_alarms_black_24dp);
    viewHolder.imageButton.setImageDrawable(myDrawable);
//viewHolder.imageButton.setImageResource(R.drawable.ic_access_alarms_black_24dp);
}
else {
    //Bitmap bm2 = BitmapFactory.decodeResource(Resources.getSystem(), R.drawable.ic_settings_black_24dp);
    Drawable myDrawable2 = Resources.getSystem().getDrawable(R.drawable.ic_settings_black_24dp);
    viewHolder.imageButton.setImageDrawable(myDrawable2);
//viewHolder.imageButton.setImageResource(R.drawable.ic_settings_black_24dp);
}

在我的row.xml中,如果我使用setImageResource,我不需要放android:src="@drawable/ic_settings_black_24dp。因此,对我来说,采用这个解决方案会容易得多,但这个公认的答案让我感到不确定。请告诉我:哪一个性能最好?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57343237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档