- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Android 的 setImageResource() documentation状态:
This does Bitmap reading and decoding on the UI thread, which can cause a latency hiccup. If that's a concern, consider using setImageDrawable(android.graphics.drawable.Drawable) or setImageBitmap(android.graphics.Bitmap) and BitmapFactory instead.
我希望在我的示例应用程序中解决这个确切的问题。我想我应该在这里“读懂字里行间”并替换我的电话:
((ImageView) rootView.findViewById(R.id.screen_image)).setImageResource(imageId);
改为调用
InputStream is = this.getResources().openRawResource(imageId);
Bitmap imageBitmap = BitmapFactory.decodeStream(is);
((ImageView) rootView.findViewById(R.id.screen_image)).setImageBitmap(imageBitmap);
但在另一个线程中执行此操作,方法是使用类似 AsyncTask
的东西 -
我的理解是否正确,或者是否有更简单的解决方案?
更新:
displaying bitmaps efficiently 上好像有一整节在 developer.android.com - 我现在正在调查。
最佳答案
解决此问题的最简单方法是创建一个 worker thread如线程和进程文档中所述。正如它所提到的,异步任务可用于替换它以获得更复杂的代码。最终的解决方案是在 OnCreateView()
方法中更改我的代码,替换原来的滞后代码:
final View rootView = inflater.inflate(R.layout.fragment_screen, container, false);
int i = getArguments().getInt(ARG_PANEL_NUMBER);
String panel = getResources().getStringArray(R.array.panel_array)[i];
int imageId = getResources().getIdentifier(panel.toLowerCase(Locale.getDefault()),
"drawable", getActivity().getPackageName());
((ImageView) rootView.findViewById(R.id.screen_image)).setImageDrawable(getResources().getDrawable(imageId));
有一个新的后台线程:
final View rootView = inflater.inflate(R.layout.fragment_screen, container, false);
// Load image in a separate thread to ensure navigation drawer animation is smooth.
// Replace with Async Task if necessary
new Thread(new Runnable() {
public void run() {
int i = getArguments().getInt(ARG_PANEL_NUMBER);
final String panel = getResources().getStringArray(R.array.panel_array)[i];
int imageId = getResources().getIdentifier(panel.toLowerCase(Locale.getDefault()),
"drawable", getActivity().getPackageName());
InputStream is = getActivity().getResources().openRawResource(imageId);
final Bitmap imageBitmap = BitmapFactory.decodeStream(is);
rootView.post( new Runnable() {
public void run() {
((ImageView) rootView.findViewById(R.id.screen_image)).setImageBitmap(imageBitmap);
getActivity().setTitle(panel);
}
});
}
}).start();
如上述文档所述,如果此代码变得太大,则使用异步任务更具可扩展性和可维护性。
关于android - 用 setImageBitmap 替换对 setImageResource() 的调用以减少打嗝?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604423/
我有一些从 htmled 获得的 jquery 代码,用于将照片从一张转换到下一张。但出现的第二张图片只出现了一瞬间,然后就转到下一张图片。之后循环就顺利了,没有问题。 这是 jquery: $('.
一切正常。但是,当单击下拉菜单图标时,下拉元素首先会犹豫滑动。我显然希望它在滑动时有更流畅的过渡。 here is my jsfiddle https://jsfiddle.net/0s49o5bz/
我正在使用 MooTools 制作一个相当简单的补间动画。开场动画非常流畅。但后来我添加了结束动画(与开始动画相反),但几乎每次都会在最后出现卡顿/打嗝的情况。 我尝试了以下方法但没有成功: 从展开的
我们在使用 Unity3D 和 iOS8 时遇到了一个奇怪的问题。大约 1 分钟后,出现了一个大的(有时小一点)打嗝,我们不知道为什么。垃圾收集? 我们花了几天时间试图找出问题所在,然后创建了一个出现
我有一个表格,使用 hiccup 框架。它看起来像这样: (form-to {:enctype "multipart/form-data"} [:post "/add-data"] ...
我是一名优秀的程序员,十分优秀!