布局从乌里设置背景 [英] Set background of layout from Uri
本文介绍了布局从乌里设置背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我返回一个开放的,当我选择从库中的图像。我要将此图片作为我的布局的背景。如果这是一个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:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:ID =@ + ID / RL
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:以下属性来=@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_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屋!
查看全文