0

我是 android 新手,我正在尝试在其中做 1 个小项目。我正在尝试从可绘制文件夹中获取图片并将其切割成 9 块并将这些块存储在位图数组中。我能够做到那..

现在,我如何从位图数组中检索这些片段并将其显示在图像视图上?

我在 UI 中使用了 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;
    } 
4

1 回答 1

0

您只能将一个位图分配给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));
于 2012-08-23T07:49:35.427 回答