廃止されたためGalleryView
、いくつかの代替ウィジェットに移行する必要があります。私の場合ViewFlipper
は最高ですが、次のスクリーンショットでわかるように、カルーセルImageGallery
を設計しましたGalleryView
:
すべてが期待どおりにViewFlipper
機能しますが、次の 2 つのことを実装できません。
1-ViewFlipper
常に 1 つのアイテムを表示します。ただし、一度に 3 つ (またはそれ以上) のアイテムを表示する必要があります。
2-ViewFlipper
タッチできないウィジェットで、私が欲しいものではありません!
FlávioFariaViewPager
が次の投稿で述べたように、これも素晴らしいケースですが、スケールアップ アニメーションを渡すことができません!
ですべてを実行しましたがViewPager
、今ではうまく機能していますが、機能が1つ欠けていて、それは無限スクロールです!
PagerAdapter
クラスを追加しました
public class CarouselAdapter extends PagerAdapter
{
private Context mContext;
private ImageLoader imageLoader;
private String[] bannerUri;
public CarouselAdapter (Context c, String[] bannerArray)
{
this.mContext = c;
this.bannerUri = bannerArray;
// Setup image loader
this.imageLoader = ImageLoader.getInstance();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c)
.threadPoolSize(2)
.memoryCache(new WeakMemoryCache())
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.build();
this.imageLoader.init(config);
}
@Override
public Object instantiateItem(ViewGroup container, int position)
{
if (position >= bannerUri.length)
position %= bannerUri.length;
ImageView i = new ImageView(mContext);
displayImage(i, bannerUri[position]);
i.setScaleType(ScaleType.FIT_XY);
container.addView(i);
return i;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
container.removeView((View)object);
}
@Override
public int getCount()
{
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return (view == object);
}
private void displayImage(final ImageView mImage, String ImageUri)
{
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.border)
.showImageForEmptyUri(R.drawable.border)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565)
.resetViewBeforeLoading()
.cacheOnDisc()
.displayer(new FadeInBitmapDisplayer(740))
.build();
imageLoader.loadImage(ImageUri, defaultOptions, new SimpleImageLoadingListener()
{
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
{
mImage.setImageDrawable(new BitmapDrawable(mContext.getResources()
, getDesiredBitmap(loadedImage, 12)));
}
});
}
private Bitmap getDesiredBitmap(Bitmap originalImage, int roundValue)
{
// Create required bitmaps
Bitmap shadowBitmap = BitmapFactory.decodeResource(mContext.getResources()
, R.drawable.samsungapps_thumb_shadow);
Bitmap outputBitmap = Bitmap.createBitmap(originalImage.getWidth()
, originalImage.getHeight() + 80, Bitmap.Config.ARGB_8888);
// Create canvas and pass bitmap to it
Canvas mCanvas = new Canvas(outputBitmap);
// And finally draw the shaodw
mCanvas.drawBitmap(Bitmap.createScaledBitmap(shadowBitmap, originalImage.getWidth()
, (int)(shadowBitmap.getHeight() / 2.3), false), 0, originalImage.getHeight(), null);
mCanvas.drawBitmap(originalImage, 0, 0, null);
return outputBitmap;
}
}
これら2つのことを達成する方法について何か考えはありますか?