我有一个具有不同图形元素(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
代码,那么我可以提供更好的解决方案。