0

我想在我的新画廊中动态添加和删除图像。我正在将图像转换为字节数组(位图)并发送到另一个应该是我的新画廊的活动。当我使用一个图像时,这很好用。但是当我将另一个图像转换为 byteArray 并将第二个图像覆盖第一个图像发送到我的新图库中的另一个活动。如何添加和删除两张图片和更多不同的图片。图片尺寸小))))非常感谢功能回复。

有我要发送图片的代码

private void saveFirstSelectedImageIdPreferences(String key, int position) {
    firstSelectionPositionId = position;
    sp = PreferenceManager.getDefaultSharedPreferences(this);
    Editor edit = sp.edit();
    edit.putInt(key, firstSelectionPositionId);
    Log.d(MY_LOG,"///// saving first selected image id/////////////////////"
                    + firstSelectionPositionId);
    edit.commit();
    //decode picture into byte array
    Bitmap btm = BitmapFactory.decodeResource(getResources(), R.drawable.sport_0);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    btm.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte [] byteArray = stream.toByteArray();
    //sending picture into favorite activity
    Intent intent = new Intent(this,Favorites.class);
    intent.putExtra("sport_0", byteArray);
    startActivity(intent);
    Log.d(MY_LOG,"convert first item to bytes");
    Toast.makeText(this, "Picture add to favorite", Toast.LENGTH_SHORT).show();


}

在这行代码中byte[] byteArray = {(byte)R.drawable.sport_0} 我可以只添加一个图像,就是这样。如何做而不是单击按钮单击添加和按钮取消单击删除图片录制图片。也许你知道解决这个问题的更好方法。请帮我解决这个问题。再次感谢您的回复。

最好的问候塔拉斯·马托利内茨

并且有我想发送图像和我的新画廊的代码活动

final String MY_LOG = "mylog";
Gallery gallery;
ImageView imageView;
Bitmap btm;

byte[] byteArray = {(byte)R.drawable.sport_0};


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favorite);

    imageView = (ImageView) findViewById(R.id.ImageFavoriteView);
    gallery = (Gallery) findViewById(R.id.FavoriteGallery);

    // creating AddImgadapter
    gallery.setAdapter(new AddImgAdapter(this));
    // getting gallery item click listener
    gallery.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> perent, View view,
                int position, long id) {
            imageView.setImageBitmap(btm);
            Log.d(MY_LOG, "img Id"+position);

        }
    });


    //finish activity
   // finish();
}


// new our adapter
public class AddImgAdapter extends BaseAdapter {
    int GalItemBg;
    Context count;

    public AddImgAdapter(Context c) {
        count = c;
        // taking Gallery attributes and resource id theme
        TypedArray typeArray = obtainStyledAttributes(R.styleable.GalleryTheme);
        GalItemBg = typeArray.getResourceId(
                R.styleable.GalleryTheme_android_galleryItemBackground, 0);
        typeArray.recycle();


    }

    // amount of element
    @Override
    public int getCount() {

        return  byteArray.length;
    }


    // position of element
    @Override
    public Object getItem(int position) {

        return position;
    }
    // id of element
    @Override
    public long getItemId(int position) {

        return position;
    }
    //setting  view image resourses params  position and backgroud resourses

    @Override
    public View getView(int position, View converView, ViewGroup parent) {

        if(Sport.firstSelectionPositionId == Sport.selectedPosition){
        Bundle extrasFirst = getIntent().getExtras();
        byteArray = extrasFirst.getByteArray("sport_0");
        Log.d(MY_LOG, "covert bytes to first item");
        btm = BitmapFactory.decodeByteArray(byteArray, 0,
                byteArray.length);
        imageView.setImageBitmap(btm);
        }else if(Sport.secoundSelectedPositionId == Sport.selectedPosition){
            Bundle extrasSecond = getIntent().getExtras();
            byteArray = extrasSecond.getByteArray("sport_1");
            Log.d(MY_LOG, "covert bytes to second item");
            btm = BitmapFactory.decodeByteArray(byteArray, 0,
                    byteArray.length);
            imageView.setImageBitmap(btm);
        }


        ImageView newImageView = new ImageView(count);
        newImageView.setImageBitmap(btm);
        newImageView.setLayoutParams(new Gallery.LayoutParams(130, 100));
        newImageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        newImageView.setBackgroundResource(GalItemBg);

        return newImageView;

    }

}
4

0 回答 0