2016-05-16 11 views
1

URLからイメージをロードするこの作業関数があります。唯一のことは、画像をロードする間に進捗が示されず、画面が暗くなり、しばらくすると画像が表示されることです。これにより、ユーザーは作業していないように思えるようになります。では、イメージがロードされている間、またはイメージがロード中であることを示す何らかの方法で、進行状況ダイアログを追加するにはどうすればよいですか?ダイアログボックス/ポップアップでイメージを読み込むときの進捗ダイアログ

public void showImage() { 
    Dialog builder = new Dialog(this); 
    builder.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    builder.getWindow().setBackgroundDrawable(
      new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
    builder.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialogInterface) { 
      //nothing; 
     } 
    }); 

    ImageView imageView = new ImageView(this); 
    Picasso.with(this).load("http://camranger.com/wp-content/uploads/2014/10/Android-Icon.png").into(imageView); 
    builder.addContentView(imageView, new RelativeLayout.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT, 
      ViewGroup.LayoutParams.MATCH_PARENT)); 
    builder.show(); 
} 
+0

可能な重複: //stackoverflow.com/questions/24826459/animated-loading-image-in-picasso) –

+0

'.into()'メソッドには秒がありますイメージがロードされているかどうかをチェックするコールバックとしてのond引数。やってみました ? – vtproduction

答えて

2
public void showImage() { 
    Dialog builder = new Dialog(this); 
    builder.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    builder.getWindow().setBackgroundDrawable(
      new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
    builder.setOnDismissListener(new DialogInterface.OnDismissListener() { 
     @Override 
     public void onDismiss(DialogInterface dialogInterface) { 
      //nothing; 
     } 
    }); 

    final ProgressDialog progressDialog = new ProgressDialog(this); 
    ImageView imageView = new ImageView(this); 
    Picasso.with(this) 
      .load("http://camranger.com/wp-content/uploads/2014/10/Android-Icon.png") 
      .into(imageView, new com.squareup.picasso.Callback() { 
       @Override 
       public void onSuccess() { 

        // The image has loaded you can make the progress bar invisible 
        if (progressDialog.isShowing()) 
         progressDialog.dismiss(); 
       } 

       @Override 
       public void onError() { 
        // Show some error message 
        if (progressDialog.isShowing()) 
         progressDialog.dismiss(); 
       } 
      }); 


    builder.addContentView(imageView, new RelativeLayout.LayoutParams(
      ViewGroup.LayoutParams.MATCH_PARENT, 
      ViewGroup.LayoutParams.MATCH_PARENT)); 
    builder.show(); 

    progressDialog.setMessage("please wait"); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 
} 
+0

'progressDialog'を' final'として宣言する必要がありますが、 'setVisibility'は解決できません。 –

+0

これは、メソッドがそのスーパークラスのメソッドをオーバーライドしないことを示しています。 –

+0

そのエラーはどこに来ますか?私は特定の行を意味しますか? '@ Override'には –

4

プレースホルダ を追加してみてくださいは、レイアウトフォルダ

<RelativeLayout 
android:id="@+id/hoteldetails_myContainer" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 


<ProgressBar 
    android:id="@+id/hoteldetails_progressBar" 
    style="?android:attr/progressBarStyleSmall" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:layout_gravity="center" 
    android:visibility="gone" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:layout_marginTop="20dp" 
    android:layout_marginBottom="20dp" /> 

<ImageView 
    android:id="@+id/hoteldetails_imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="fitXY"/> 
</RelativeLayout> 

にこれを追加し、このコードをロードするに

Picasso.with(this) 
     .load(hoteImageStr) 
     .error(R.drawable.loading) 
     .into(img, new com.squareup.picasso.Callback() { 
      @Override 
      public void onSuccess() { 
       if (progress != null) { 
        progress .setVisibility(View.GONE); 
       } 
      } 

      @Override 
      public void onError() { 

      } 
     }); 
[ピカソアニメーションローディング画像](HTTPの
関連する問題