2011-06-24 6 views
1

私は、画像を取得している間、プログレスバーのスピナーをプレースホルダとして使用する方法を理解したいと考えていました。アニメーション化された.gifを入れましたが、すぐに私はそれが.gifがアンドロイドでうまくやっていないことが分かったのです。ここに私のコードは次のとおりです。アンドロイド:プレースホルダとしてのプログレスバー

public void displayImage(String url, CarActivity activity, ImageView imageView) { 
     if(imageMap.containsKey(url)) 
      imageView.setImageBitmap(imageMap.get(url)); 
     else { 
      queueImage(url, activity, imageView); 
      imageView.setImageResource(R.drawable.loading); 

     } 
    } 

の代わりに、私はプレースホルダとしてスピナーに建てられ、おそらくそれは別の画像の上に重ねてきたどのように使用できるか、私のloading.gifに画像を設定します。

ありがとうございました!

答えて

5

実際の質問は、「どのように1つのビューを別のビューの上に置くことができますか」です。あなたの場合、背面にImageView、前面にProgressBarが必要なようです。 (デフォルトではバーではないので、ProgressBarの名前は少し不気味です。小さな回転アニメーションです)。

現在ImageViewがあるレイアウトで、RelativeLayoutを作成します。 RelativeLayout内で、まずImageViewを配置し、次にProgressBarを配置します。 ProgressBarのandroid:visibility属性= "invisible"を設定し、それを見たいときは、コード内で可視に設定します:view.setVisibility(View.VISIBLE); (または.INVISIBLE)。

RelativeLayoutのサイズをwrap_contentに設定し、ImageViewでも同様に設定します。 ProgressBarでは、小さなサイズ、例えば40dipの幅と高さをハードコードすることができます。画像の中央に配置する場合は、ProgressBarのレイアウトパラメータを "centerInParent"に設定します。

2

ViewAnimatorを使用して、ImageViewとProgressBarウィジェットを切り替える方法を検討します。

あなたのXMLレイアウトにViewAnimatorを追加し、あなたの活動にこのような何かを:addView()の最初のフィールドは、あなたが追加している子ビューで

ViewAnimator switch = (ViewAnimator) findViewById(R.id.your_id); 
ImageView image = new ImageView(this); 
ProgressBar loading = new ProgressBar(this); 

switch.addView(loading, 0, myLayoutParams); 
switch.addView(image, 1, myLayoutParams); 

を、第二は、それの指標でありますAnimatorでは3番目はLayoutParamsオブジェクトです(ここでは示していません)。

私はコードをテストしていませんが、Android ProgressBarウィジェットが表示されるはずです。

次に、あなたのイメージがロードされるたびに、呼び出し:

switch.showNext(); 

はまた、例えば hereは、あなたがそれをチェックアウトしたい場合は、あなたが必要なものに似ているようです。

+0

これを投稿した後、私は@mahがはるかに単純な解決策を考え出したことに気付きました。私はまずそれを試してみる。 – theisenp

関連する問題