繁体   English   中英

Android:如何将imageview的源设置为位图数组中的位图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM