我有一个RecyclerView与Cardviews.我想在这个CardView中滑动图像,就像在OLX应用程序中一样.这样做最好的方法是什么?
我想把看门人放在cardview里面.可以吗还是应该尝试别的东西?
我想把看门人放在cardview里面.可以吗还是应该尝试别的东西?
我用ViewPager做了,但看起来太慢了.这是查看器适配器的一部分.
@Override public Object instantiateItem(ViewGroup collection,int position) { LayoutInflater inflater = LayoutInflater.from(mContext); ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.viewpager_custom,collection,false); collection.addView(layout); ImageView image = (ImageView) layout.findViewById(R.id.viewPagerImageView); image.setImageResource(mPics[position]); return layout; }
解决方法
你要走正确的路.
只需要加载压缩位图,而不是未压缩的位图.
您直接将位图资源设置为您的图像视图.使用像毕加索的图书馆
https://github.com/square/picasso/
或使用谷歌的官方来源有效地加载大型位图.
首先在您的活动中复制此方法:
public static int calculateInSampleSize( BitmapFactory.Options options,int reqWidth,int reqHeight) { // Raw height and width of image final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int halfHeight = height / 2; final int halfWidth = width / 2; // Calculate the largest inSampleSize value that is a power of 2 and keeps both // height and width larger than the requested height and width. while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) { inSampleSize *= 2; } } return inSampleSize; }
那么这个方法来解码位图:
public static Bitmap decodeSampledBitmapFromResource(Resources res,int resId,int reqHeight) { // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res,resId,options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options,reqWidth,reqHeight); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res,options); }
然后加载你的位图像这样:
@Override public Object instantiateItem(ViewGroup collection,false); collection.addView(layout); ImageView image = (ImageView) layout.findViewById(R.id.viewPagerImageView); image.setImageBitmap( decodeSampledBitmapFromResource(getResources(),R.id.myimage,reqwidth,reqheight)); return layout; }