我有ImageView
和一个按钮和2张图片。单击该按钮将导致切换ImageView
中的图像。
以下是代码
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(this );
flag = true;
imageView1 = (ImageView ) findViewById(R.id.imageView1);
imageView1.setImageResource(R.drawable.off);
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
// imageView1.setImageResource(R.id.);
//imageView1.setImageResource(R.drawable.off_widget);
flag= !flag;
if( flag == true )
{
imageView1.setImageResource(R.drawable.off);
}
else
{
imageView1.setImageResource(R.drawable.on);
}
但是加载时间很长。图像大小为188 KB和110 KB。我该怎么做才能减少加载时间?
答案 0 :(得分:0)
这里的问题不是加载时间,即使200KB图像也不是那么大。您的GUI实际上会冻结由图像加载引起的短时间(加载图像所需的时间)。这会导致切换。
此处防止GUI冻结的最佳做法是将图像作为AsyncTask
加载到Drawable
中,然后将其分配给ImageView
。您可以找到代码示例here。您只需从onCreate(...)
或onStart(...)
调用该任务即可。将Drawable
从AsyncTask
加到主要活动的另一个最佳做法是使用Observer Pattern,其中AsyncTask
是Observer,您的主要活动是观察者。 Android已经为此提供了问题类。您还可以找到代码示例here。
答案 1 :(得分:0)
你在哪里存放了关闭图像?您是否为每个屏幕密度创建了缩放版本?
当您将100kb图像添加到可绘制目录(而不是drawable-)时,图像将被视为mdpi图像,因此缩放到设备的密度。因此,drawable目录中的png在xxhdpi设备上占用的内存比100kb多得多。