0

我用意图打开用户手机的画廊,现在我需要将选定的图像设置为我的活动的墙纸。或者在我的活动上将图像设置为 ImageView。而不是设置为手机的墙纸。有人可以帮助我吗?这是我到目前为止使用的代码..我可以选择图像。但在那之后没有任何反应。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    Button chooseImg=(Button) findViewById(R.id.btnChooseImg);
    chooseImg.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent img=new Intent();
            img.setType("image/*");
            img.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser
                    (img, "Select Picture"),SELECT_PICTURE);

            Object tag=v.getTag();
            Integer rId=(Integer) tag;
            img.putExtra("bgImage", rId);



            try{
            imgLayout=(ImageView) findViewById(R.id.bgImg1);


            int imgId=img.getExtras().getInt("bgImage");
            imgLayout.setBackgroundResource(imgId);

            }
            catch(Exception e){
                Toast.makeText(getApplicationContext(), "nope", Toast.LENGTH_SHORT).show();
            }

        }
    });

}
4

1 回答 1

2

像这样实现 onActivityResult

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SELECT_PICTURE&& resultCode == RESULT_OK && data != null && data.getData() != null) {

        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            // Log.d(TAG, String.valueOf(bitmap));

            ImageView imageView = (ImageView) findViewById(R.id.yourimageview);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

为了设置按钮背景,像这样创建一个 BitmapDrawable

BitmapDrawable bdrawable = new BitmapDrawable(context.getResources(),bitmap);

对于布局,您可以使用 setBackgroundDrawable方法

于 2016-08-28T12:01:40.703 回答