布局从乌里设置背景 [英] Set background of layout from Uri

查看:111
本文介绍了布局从乌里设置背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我返回一个开放的,当我选择从库中的图像。我要将此图片作为我的布局的背景。如果这是一个ImageView的,这将是罚款。我该怎么办呢?

 案例LOAD_FROM_GALLERY:
        mImageCaptureUri = data.getData();
        //ImageView.setImageURI(mImageCaptureUri);

        mylayout。??

        打破;
 

解决方案

请尝试以下

  URI路径= data.getData();
ImageView的IV =(ImageView的)findViewById(R.id.imageView1);
iv.setImageURI(路径);
 

编辑:

  URI路径= data.getData();
 

然后调用

 文件f =新的文件(getRealPathFromURI(路径));
    绘制对象D = Drawable.createFromPath(f.getAbsolutePath());
myalyout.setBackground(四);
 

getRealPathFromURI方法

 私人字符串getRealPathFromURI(URI contentURI){
            。光标光标= getContentResolver()查询(contentURI,NULL,NULL,NULL,NULL);
            如果(光标== NULL){//来源是Dropbox的或其他类似的本地文件路径
                返回contentURI.getPath();
            } 其他 {
                cursor.moveToFirst();
                INT IDX = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                返回cursor.getString(IDX);
            }
        }
 

例如:

activtiy_main.xml

 < RelativeLayout的的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    机器人:layout_width =match_parent
    机器人:layout_height =match_parent
    机器人:ID =@ + ID / RL
    机器人:paddingBottom会=@扪/ activity_vertical_margin
    机器人:以下属性来=@扪/ activity_horizo​​ntal_margin
    机器人:paddingRight =@扪/ activity_horizo​​ntal_margin
    机器人:paddingTop =@扪/ activity_vertical_margin
    工具:上下文=MainActivity。>

    <按钮
        机器人:ID =@ + ID /按钮1
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT
        机器人:layout_alignParentBottom =真
        机器人:layout_alignParentRight =真
        机器人:layout_marginRight =106dp
        机器人:文本=按钮/>

< / RelativeLayout的>
 

MainActivity.java

 公共类MainActivity延伸活动{

    RelativeLayout的RL;
    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main);
        RL =(RelativeLayout的)findViewById(R.id.rl);
        按钮B =(按钮)findViewById(R.id.button1);
        b.setOnClickListener(新OnClickListener()
        {

            @覆盖
            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                的getImage();
            }
        });
    }

    公共无效的getImage()
    {
        //打开一个画廊浏览器
        意向意图=新的意图();
        intent.setType(图像/ *);
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(意向,选择图片),1);
        //要处理时,图像从浏览器中选择,以下内容添加到您的活动
    }
        @覆盖
        公共无效onActivityResult(INT申请code,INT结果code,意图数据){
        如果(结果code == RESULT_OK){
        如果(要求code == 1){
        // currImageURI是全局变量即时通讯使用,以保持内容:// URI图像
        乌里currImageURI = data.getData();
        档案文件=新的文件(getRealPathFromURI(currImageURI));

        如果(file.exists()){

            绘制对象D = Drawable.createFromPath(file.getAbsolutePath());
            rl.setBackground(四);
        }
        }
        }
        }
        私人字符串getRealPathFromURI(URI contentURI){
            。光标光标= getContentResolver()查询(contentURI,NULL,NULL,NULL,NULL);
            如果(光标== NULL){//来源是Dropbox的或其他类似的本地文件路径
                返回contentURI.getPath();
            } 其他 {
                cursor.moveToFirst();
                INT IDX = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                返回cursor.getString(IDX);
            }
        }
}
 

I return an Uri when I select an image from the gallery. I want to set this image as the background of my layout. If it was an ImageView, it would be fine. How can I do it?

    case LOAD_FROM_GALLERY: 
        mImageCaptureUri = data.getData();
        //ImageView.setImageURI(mImageCaptureUri);

        mylayout.??

        break;  

解决方案

Try the below

Uri path = data.getData();
ImageView iv= (ImageView) findViewById(R.id.imageView1); 
iv.setImageURI(path);  

Edit:

    Uri path = data.getData();

Then call

    File f = new File(getRealPathFromURI(path));  
    Drawable d = Drawable.createFromPath(f.getAbsolutePath());
myalyout.setBackground(d);

getRealPathFromURI method

private String getRealPathFromURI(Uri contentURI) {
            Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
            if (cursor == null) { // Source is Dropbox or other similar local file path
                return contentURI.getPath();
            } else { 
                cursor.moveToFirst(); 
                int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
                return cursor.getString(idx); 
            }
        }

Example:

activtiy_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rl"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginRight="106dp"
        android:text="Button" />

</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {

    RelativeLayout rl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rl = (RelativeLayout) findViewById(R.id.rl);
        Button b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                getImage();
            }
        }); 
    }

    public void  getImage()
    {
        // To open up a gallery browser
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);
        // To handle when an image is selected from the browser, add the following to your Activity
    }
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
        // currImageURI is the global variable I�m using to hold the content:// URI of the image
        Uri currImageURI = data.getData();
        File file = new File(getRealPathFromURI(currImageURI));

        if (file.exists()) {

            Drawable d = Drawable.createFromPath(file.getAbsolutePath());
            rl.setBackground(d);
        }
        }
        }
        }
        private String getRealPathFromURI(Uri contentURI) {
            Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
            if (cursor == null) { // Source is Dropbox or other similar local file path
                return contentURI.getPath();
            } else { 
                cursor.moveToFirst(); 
                int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
                return cursor.getString(idx); 
            }
        }
}

这篇关于布局从乌里设置背景的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆