5

最初のアクティビティのリストビューにイメージビューがあります。イメージビューをリストビュー項目のクリックで 2 番目のアクティビティに送信したいと考えています。

次のコードを試しました-

描画可能な画像をバイト配列に変換します:-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
                byte[] byteArray = stream.toByteArray();

インテント経由で送信-

Intent intent=new Intent(PicturesList.this,PictureDetail.class);
                intent.putExtra("Bitmap", byteArray);
                startActivity(intent);

2回目の活動では

Bundle extras = getIntent().getExtras();
        byteArray = extras.getByteArray("Bitmap");

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
                        imageview.setImageBitmap(bmp);

しかし、問題はここにあります-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

これにはドローアブル イメージが必要で、イメージ ビューがあります。イメージ ビューをドローアブルに変換できますか? それとも何か?drawable の代わりに imageview を送信する方法。誰もがこれを行ったことがあります。

これは、イメージビューで画像を設定する方法です

new AsyncTask<Void,Void,Void>() {
            @Override
            protected Void doInBackground(Void... params) {


                try {
                    URL newurl = new URL("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png");
                    bitmap= BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
                    //bitmap = Bitmap.createScaledBitmap(bitmap, 50,50, true);
                }
                catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            //  bitmap=imageLoader.DisplayImage("http://farm3.static.flickr.com/2199/2218403922_062bc3bcf2.jpg", imageview);
                //bitmap = Bitmap.createScaledBitmap(bitmap, imageview.getWidth(), imageview.getHeight(), true);
                return null;
            }
            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                imageview.setImageBitmap(bitmap);
            }
        }.execute();
4

3 に答える 3

4

Bitmap をバイト配列に変換する必要はありません。ビットマップはパーセル可能なのでputParcelable(String, Parcelable)、バンドルに追加するために使用できます。

編集:

例えば:

Bundle extras = new Bundle();
extras.putParcelable("Bitmap", bmp);
intent.putExtras(extras);
startActivity(intent);

次に、2 番目のアクティビティで:

Bundle extras = getIntent().getExtras();
Bitmap bmp = (Bitmap) extras.getParcelable("Bitmap");
于 2012-10-12T11:51:02.977 に答える
0

次のアクティビティImageviewで画像IDを渡し、IDを設定します。

GEt ID  ((ImageView) v).getId();
SET ID  imageView.setImageResource(imgId);
于 2012-10-12T11:54:08.100 に答える
0

ImageViewをビットマップに変換できます。これを試してください

Bitmap bitmap = Bitmap.createBitmap(imageView .getMeasuredWidth(),imageView .getMeasuredHeight(), Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
ImageView .draw(canvas);
于 2012-10-12T11:54:22.223 に答える