0

私はAndroidを初めて使用し、その中で1つの小さなプロジェクトを実行しようとしています。描画可能なフォルダーから画像を取得して9つに分割し、それらをビットマップ配列に格納しようとしています。それ..

では、ビットマップ配列からそれらの部分を取得して、imageviewに表示するにはどうすればよいですか?

UIでグリッドビューを使用して画像を表示しましたが、ビットマップ配列を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

に割り当てることができるビットマップは1つだけImageViewです。配列を使用する場合は、ImageViewクラスを拡張し、カスタムで配列を自分で処理する必要がありますView

あなたがしなければならない2つのこと:

1.)Bitmap配列を新しいプライベートフィールドに設定するためのパブリックメソッドを作成する必要があります。

2.)単一のを描画する代わりに、onDraw(Canvas canvas)メソッドを上書きして配列に描画する必要があります。BitmapsDrawable

編集:私はあなたの質問を誤解したかもしれません、あなたが単一の代わりにBitmapsに追加しようとすると、あなたはカスタムアダプターでそれを行うことができます:GridViewImageView

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 に答える