利用可能な写真の数に応じて、イメージビューまたはギャラリーを使用します。利用可能な画像が 1 つしかない場合は、imageview を使用します。これは魅力的に機能します。u niversalloaderのイメージローダーを使用します。画像は全幅で画面の上部にあります。
複数の写真がある場合は、ギャラリーをページリンディケーターと共に使用します。小さい画面ではこれで問題なく動作します。しかし、タブレットでは、画像が全画面に表示されるわけではありません。これは、単一のイメージビューで表示されるため奇妙であり、イメージローダーはその仕事を完璧に実行します。ギャラリーの設定と関係があると思います。
ギャラリーのコード:
// define pager identifier
pager = (LinearLayout)findViewById(R.id.pager);
pagerdot1 =(ImageView)pager.findViewById(R.id.pager_dot_1);
pagerdot2 =(ImageView)pager.findViewById(R.id.pager_dot_2);
pagerdot3 =(ImageView)pager.findViewById(R.id.pager_dot_3);
venueImage = (ImageView)findViewById(R.id.venueImage);
venueGallery = (CustomGallery)findViewById(R.id.GVvenueImage);
imageLoader=new LargerImageLoader(this.getApplicationContext());
if(venue.photos.size()>1){//multiple photos --> gallery
if(venue.photos.size()==2){
pagerdot3.setVisibility(View.GONE);
}
venueGallery.setVisibility(View.VISIBLE);
venueImage.setVisibility(View.GONE);
String[] fotos = new String[venue.photos.size()];
for(int i=0;i<venue.photos.size();i++){
if(venue.photos.get(i).large !=null){
fotos[i] = venue.photos.get(i).large;
System.out.println(venue.photos.get(i).large);
}
}
ImagePagerAdapter galleryad = new ImagePagerAdapter(fotos);
venueGallery.setAdapter(galleryad);
venueGallery.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> adapter, View view, int position, long id) {
switch(position) {
case 0:
pagerdot1.setImageResource(R.drawable.pager_oranje);
pagerdot2.setImageResource(R.drawable.pager_wit);
pagerdot3.setImageResource(R.drawable.pager_wit);
break;
case 1:
pagerdot2.setImageResource(R.drawable.pager_oranje);
pagerdot1.setImageResource(R.drawable.pager_wit);
pagerdot3.setImageResource(R.drawable.pager_wit);
break;
case 2:
pagerdot3.setImageResource(R.drawable.pager_oranje);
pagerdot2.setImageResource(R.drawable.pager_wit);
pagerdot1.setImageResource(R.drawable.pager_wit);
break;
default:
pagerdot1.setImageResource(R.drawable.pager_oranje);
pagerdot2.setImageResource(R.drawable.pager_wit);
pagerdot3.setImageResource(R.drawable.pager_wit);
}
}
@Override
public void onNothingSelected(AdapterView<?> adapter) {
}
});
}else if(venue.photos.size() ==1 ){ //1 foto
if(venue.photos.get(0).large != null){
venueGallery.setVisibility(View.GONE);
venueImage.setVisibility(View.VISIBLE);
imageLoader.DisplayImage(venue.photos.get(0).large, venueImage);
} else{
setStandardPic();
}
pager.setVisibility(View.GONE);
//
} else{
setStandardPic();
}
そして:
private class ImagePagerAdapter extends BaseAdapter {
private String[] images;
private LayoutInflater inflater;
ImagePagerAdapter(String[] images) {
this.images = images;
inflater = getLayoutInflater();
}
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = null;
RelativeLayout borderImg;
if (convertView == null) {
imageView = new ImageView(getBaseContext());
imageView.setLayoutParams(new LayoutParams(width,height)); // size
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(0,0,0,0);
imageView = (ImageView) inflater.inflate(R.layout.item_gallery_image, parent, false);
borderImg = new RelativeLayout(getBaseContext());
borderImg.setPadding(0,0,0,0);
borderImg.setBackgroundColor(Color.TRANSPARENT); // no color
}else {
imageView = (ImageView) convertView;
borderImg = (RelativeLayout) convertView;
}
imageLoader.DisplayImage(images[position], imageView);
borderImg.addView(imageView);
return borderImg;
}
}
トップ画面のxml:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/venueImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:fadingEdge="none"
android:scaleType="centerCrop"
android:src="@drawable/header_food" />
<com.hera.ontdekdelft.lazyloader.CustomGallery
android:id="@+id/GVvenueImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:fadingEdge="none"
android:scaleType="centerCrop"
android:visibility="gone" />
<ImageView
android:id="@+id/venueCategoryImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:src="@drawable/venuecategory_sights" />
<include
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
layout="@layout/gallery_pager" />
</RelativeLayout>
私のカスタム ギャラリーは、より良い fling 設定のために onFling メソッドをオーバーライドした通常のギャラリーです。
ギャラリーがタブレット画面でも機能するようにするには、何を変更すればよいですか?