如何知道ImageView何时完成加载图像?

时间:2012-05-03 15:37:24

标签: java android imageview loading

我有一个加载自定义ImageView(https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java)的Activity。在onCreate中,我使用setImageBitmap来显示一个巨大的图像(4Mb ......)。

问题是此活动需要4秒才能显示,但是我没有阻止方法可以放在AsyncTask中。我的意思是我的所有活动代码都已执行,但活动仅在加载图片时出现,我不知道它的完成时间。

我想要做的是在Activity加载时显示ProgressDialog,并在完成后显示它。

我该如何解决这个问题?这是一些代码。

希望你能理解我的问题,这很难解释。谢谢!

carte.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parentLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<loki.test.lokitest.affichage.TouchImageView 
    android:id="@+id/image"
    android:src="@drawable/loading"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

<Button 
    android:id="@+id/bouton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="@string/textBouton"/>


</RelativeLayout>

CarteActivity.java(需要4秒钟的人)

public class CarteActivity extends Activity implements OnClickListener{

private Group groupe;
private String android_id;
private ConnexionServeur serveur;
private TouchImageView vue;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    Log.d("Loki","onCreate");
    super.onCreate(savedInstanceState);
    setContentView(R.layout.carte);

    findViewById(R.id.bouton).setOnClickListener(this);

    vue = ((TouchImageView)findViewById(R.id.image));
    vue.setImageBitmap(Singleton.getInstance().getImage());

    groupe = Singleton.getInstance().getGroupe();
    android_id = Singleton.getInstance().getAndroid_id();
    serveur = Singleton.getInstance().getServeur();

    if(groupe != null)
            groupe.afficherGroupe(vue);

    }
}

编辑: 图像加载:

image = BitmapFactory.decodeResource(context.getResources(), R.drawable.myImage);

但我不认为这是需要时间的代码,当我使用setImageBitmap时已经完成了。我无法弄清楚需要花费多少时间,但我想知道这是否是我可以访问的方法。

1 个答案:

答案 0 :(得分:2)

  • Make Layout xml top container(Top RelativeLayout)带有两个元素

    1进度条 - 可见性设置为可见。把它放大并放在中心

    2相对布局 - 整个内容正文。首先让它隐形。它将在进度条下,并将在整个屏幕上填充高度和宽度。

  • 在oncreate setContentView中,然后启动一个AysncTask,在doInBackground中加载imageview。在其postExecute中,使内容主体可见,进度条不可见。 只有在您的加载完成后才会调用Postexecute

希望这个帮助,您可以在代码中翻译所有这些。