[英]Android: How do i set the source of imageview to a bitmap in a bitmap array
我是新来的Android和我试图做1个个小项目在它..我试图让从绘制文件夹中的图片,将其切割成9个和存储在一个位图array..I这些作品能够做到那..
现在,如何从位图数组中检索这些片段并将其显示在imageview上?
我在用户界面中使用了gridview来显示图像....但是无法将位图数组分配给imageResource ...
好的,这就是我想要做的..
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
Activity activity=(Activity)mContext;
Resources res=activity.getResources();
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
//imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Bitmap img=BitmapFactory.decodeResource(res, R.drawable.kite);
createBitmapPieces(img);
imageView.setImageResource(bmp[2]);//I dont know how to set the image from the array
}
public Bitmap[] createBitmapPieces(Bitmap source){
int k=0;
int width=source.getWidth();
int height=source.getHeight();
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
bmp[k]=Bitmap.createBitmap(source,(width*j)/3,(i*height)/3,width/3,height/3);
k++;
}
}
return bmp;
}
您只能将一个位图分配给ImageView
。 如果要使用数组,则必须扩展ImageView
类,并在自定义View
自己处理数组。
有两件事情你必须做的:
1.)您必须创建一个公共方法来将Bitmap
数组设置为新的私有字段。
2.)您必须覆盖onDraw(Canvas canvas)
方法并在数组中绘制Bitmaps
,而不是绘制单个Drawable
。
编辑:我可能已经误解了您的问题,如果您尝试将Bitmaps
添加到GridView
而不是单个ImageView
,则可以使用自定义适配器来做到这一点:
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private Bitmap[] mPics;
public ImageAdapter(Context c, Bitmap[] pics) {
mContext = c;
mPics = pics
}
public int getCount() {
return mPics.length;
}
public Object getItem(int position) {
return mPics[position];
}
public long getItemId(int position) {return 0;}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageDrawable(new BitmapDrawable(getItem(position)));
return imageView;
}
}
在您的Activity
:
GridView grid = (GridView) findViewById(R.id.your_imageview_id);
grid.setAdapter(new ImageAdapter(this, YOUR_BITMAP_ARRAY));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.