2017-09-28 8 views
0

ViewPagerに進捗バーを追加する必要があるコードを1つ実装します。画像がロードされなくなるまで、すべてのページャプログレスバーが表示されるためです。詳細については、あなたはイメージがロードされませんまで、画像は私がプログレスバーを追加したいのロードに時間がかかり、サーバ側から来てどこLinkViewPagerあり、このリンクをチェックすることができページャごとにプログレスバーを追加するには

これは、レイアウトファイル

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="1dip" > 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:adjustViewBounds="true" 
    android:layout_gravity="right|top" /> 

<ProgressBar android:id="@+id/progressBar" 
    android:progressDrawable="@drawable/loader_image" 
    android:layout_width="fill_parent" android:layout_height="8dip" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:indeterminateOnly="false" 
    android:max="100"> 
</ProgressBar> 
です

public class SlidingImage_Adapter extends PagerAdapter { 
private ArrayList<String> IMAGES; 
private LayoutInflater layoutInflater; 
private Context context; 
ProgressBar progressBar; 
private ImageLoader imageLoader; 

public SlidingImage_Adapter(Context context, ArrayList<String> IMAGES) { 
    this.context = context; 
    this.IMAGES=IMAGES; 
    for(int i=0;i<IMAGES.size();i++) 
     layoutInflater = LayoutInflater.from(context); 
} 


@Override 
public Object instantiateItem(ViewGroup view, int position) { 
    // ImageView imageLayout = (ImageView) inflater.inflate(R.layout.screen_slide_fragment, view, false); 
    layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View item_view = layoutInflater.inflate(R.layout.screen_slide_fragment, view, false); 
    ImageView imageView = (ImageView) item_view.findViewById(R.id.image); 
    Log.e("instantiateItem: ",IMAGES.get(position)); 
    Picasso.with(context) 
      .load(IMAGES.get(position)) 
      .placeholder(R.drawable.loader_image) 
      .into(imageView); 

    return item_view; 
} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    container.removeView((View) object); 
} 

@Override 
public int getCount() { 
    return IMAGES.size(); 
} 


@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view.equals(object); 

} 

@Override 
public void restoreState(Parcelable state, ClassLoader loader) { 
} 

@Override 
public Parcelable saveState(){ 
    return null; 
    } 
} 

てくる画像をロードするためにあなたに

+0

あなたはグライドを使って何を意味するグライド@Vikas Godiyal –

+0

を使用して達成することができ、これを追加あなたの方法は

@Override public Object instantiateItem(ViewGroup view, int position) { ImageView imageLayout = (ImageView) inflater.inflate(R.layout.screen_slide_fragment, view, false); Picasso.with(context) .load(IMAGES.get(position)) .placeholder(R.drawable.loader_image) .into(imageLayout); return imageLayout; } 

ように見えるだろうかありますか? –

+0

ViewPagerではデフォルトでは同時にページが読み込まれるため、次のページにスワイプするとプログレスバーが表示されません –

答えて

1

使用ピカソに感謝ローダーとsが

Picasso.with(context) 
     .load(imageUrl) 
     .fit() 
     .error(R.drawable.error_drawable) 
     .placeholder(R.drawable.loader_image) 
     .into(imageView); 

screen_slide_fragment.xmlがrootViewとしてのみImageViewのを含める必要があります設定します。これは、アプリケーションのGradleのファイル

compile 'com.squareup.picasso:picasso:2.5.2' 
+0

Picassoを使用することは必須です –

+0

Glide –

+0

ネットワークイメージを使用する必要はありません表示 –

関連する問題