java - ImageView 在其可绘制对象之间闪烁
问题描述
我有一个具有不同图形元素(ImageViews)的 android 应用程序。有些 ImageView 可以通过按下它们来改变,然后它们会显示另一个图形。我有两个系统,我的问题是一样的。
在第一种情况下,我将两个 ImageView 层叠在一起,然后我调用它们中的每一个并以编程方式设置它们的可见性。在第二种情况下,我使用函数“setImageResource”并在不同的可绘制对象之间进行更改。
在这两种情况下,我都有一个问题,即应用程序似乎经常“打嗝”,并且在瞬间为每个具有图形替代项的元素显示错误的“其他”图形元素。它会在一瞬间显示错误的图形,然后跳回正确的图形。
我在网上找不到任何关于此的信息,这里的任何人都认识到这个问题或对问题可能是什么有任何线索?
相关代码:
public void setLight1(int bo) // changes a graphical element by drawable
{
ImageView vw = (ImageView) findViewById(R.id.light_1);
if (bo > 0)
vw.setImageResource(R.drawable.lampaljus);
else
vw.setImageResource(R.drawable.lampaslockn);
}
private void setStickMid(int stick) // changing between two layered imageViews
{
switch (stick)
{
case 1:
ImageView vw_1 = (ImageView) findViewById(R.id.stick_1_up);
vw_1.setVisibility(View.INVISIBLE);
ImageView vw_2 = (ImageView) findViewById(R.id.stick_1);
vw_2.setVisibility(View.VISIBLE);
break;
// the rest of the switch statement omitted, just more of the same
解决方案
在我的头顶上,试试这些:
将所有
findViewById
代码移至onCreate
您的活动,以避免多次调用它。资产有多大
R.drawable.lampaljus
,R.drawable.lampaslockn
以及其他维度是明智的。因为尝试加载高分辨率绘图,尤其是 PNG,会占用大量内存。
但是我可以提供一个更好的解决方案,如果你可以发布整个xml
和Activity/Fragment
代码。
推荐阅读
- intellij-idea - Parcel watch 未检测到更改,但安全写入已关闭
- linux - linux终端命令理解和组合的问题
- python - 阅读更多文件并找到最大出现次数
- matplotlib - 如何绘制部分彩色的线?
- java - RxJava:如何从控制台以交互方式处理 Flowable
- c++ - span 可以是 constexpr 吗?
- android - E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping 对 device_type=5 失败,ret=-1
- sql - 在这种情况下使用 SQL PIVOT?
- java - Android - 如何将从 Firebase 存储下载的照片保存到手机?
- game-physics - UE4中如何区分命中事件和摩擦命中事件?