1

カスタムImageViewをロードするアクティビティがあります(https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/example/touch/TouchImageView.java)。onCreate内で、setImageBitmapを使用して巨大な画像(4Mb ...)を表示します。

問題は、このアクティビティが表示されるまでに4秒かかることですが、AsyncTaskに配置できるブロッキングメソッドがありません。つまり、すべてのアクティビティコードが実行されますが、アクティビティは画像が読み込まれたときにのみ発生し、いつ終了するかわかりません。

私がやりたいのは、アクティビティがロードしている間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を使用するとすでに実行されています。何がそんなに時間がかかるのかわかりませんが、アクセスできる方法なのかしら。

4

1 に答える 1

2
  • Layout xmlトップコンテナ(Top RelativeLayout)に2つの要素を持たせる

    1プログレスバー-可視性が可視に設定されています。大きくして中央に

    2相対レイアウト-コンテンツ本体全体。最初に非表示にします。プログレスバーの下にあり、画面全体に高さと幅の両方が表示されます。

  • oncreate setContentViewで、doInBackgroundにimageviewをロードするAysncTaskを開始します。postExecuteで、コンテンツ本文を表示し、プログレスバーを非表示にします。 Postexecuteは、ロードが完了した後にのみ呼び出されます

この助けを願って、あなたはこれをすべてコードに翻訳することができます。

于 2012-05-03T15:49:12.990 に答える