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