要解决“暗模式加载图片所需的时间比亮模式更长”的问题,可以采用以下方法:
AppCompatDelegate.getDefaultNightMode()
方法获取当前的主题模式,然后根据返回的模式值来加载相应的图片资源。int nightMode = AppCompatDelegate.getDefaultNightMode();
if (nightMode == AppCompatDelegate.MODE_NIGHT_YES) {
// 加载暗模式下的图片资源
imageView.setImageResource(R.drawable.dark_image);
} else {
// 加载亮模式下的图片资源
imageView.setImageResource(R.drawable.light_image);
}
AsyncTask
或者Thread
来实现。new Thread(new Runnable() {
@Override
public void run() {
final Drawable drawable = loadImage();
// 切换到主线程更新UI
runOnUiThread(new Runnable() {
@Override
public void run() {
imageView.setImageDrawable(drawable);
}
});
}
}).start();
private Drawable loadImage() {
int nightMode = AppCompatDelegate.getDefaultNightMode();
if (nightMode == AppCompatDelegate.MODE_NIGHT_YES) {
// 加载暗模式下的图片资源
return getResources().getDrawable(R.drawable.dark_image);
} else {
// 加载亮模式下的图片资源
return getResources().getDrawable(R.drawable.light_image);
}
}
这样可以保证图片加载的过程在后台进行,避免阻塞主线程,减少暗模式加载图片所需的时间。
上一篇:按模式和运算符“LIKE”搜索
下一篇:按模式进行图搜索