Android中ImageView实现选择本地图片并显示功能

yizhihongxing

当在Android中使用ImageView实现选择本地图片并显示功能时,可以按照以下步骤进行操作:

  1. 添加权限:首先,在AndroidManifest.xml文件中添加读取外部存储器权限。在<manifest>标签内添加以下代码:
<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\" />
  1. 创建布局文件:在布局文件中添加一个ImageView和一个Button,用于选择图片和显示图片。例如,可以创建一个名为activity_main.xml的布局文件,其中包含以下代码:
<LinearLayout 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:orientation=\"vertical\"
    android:padding=\"16dp\"
    tools:context=\".MainActivity\">

    <ImageView
        android:id=\"@+id/imageView\"
        android:layout_width=\"match_parent\"
        android:layout_height=\"wrap_content\"
        android:scaleType=\"centerCrop\" />

    <Button
        android:id=\"@+id/button\"
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:text=\"选择图片\" />

</LinearLayout>
  1. 在MainActivity中实现逻辑:在MainActivity.java文件中,实现选择图片和显示图片的逻辑。以下是一个示例代码:
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private static final int REQUEST_PERMISSION = 1;
    private static final int REQUEST_IMAGE = 2;

    private ImageView imageView;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)
                        != PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions(MainActivity.this,
                            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                            REQUEST_PERMISSION);
                } else {
                    openImageChooser();
                }
            }
        });
    }

    private void openImageChooser() {
        Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, REQUEST_IMAGE);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == REQUEST_PERMISSION) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                openImageChooser();
            } else {
                Toast.makeText(this, \"权限被拒绝\", Toast.LENGTH_SHORT).show();
            }
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_IMAGE && resultCode == RESULT_OK && data != null) {
            Uri imageUri = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
                imageView.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

在上述代码中,首先检查是否已授予读取外部存储器的权限。如果权限未授予,则请求权限。如果权限已授予,则打开图片选择器。选择图片后,将获取到的图片Uri转换为Bitmap,并将其设置到ImageView中显示。

以上就是使用ImageView实现选择本地图片并显示功能的完整攻略。希望对你有帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中ImageView实现选择本地图片并显示功能 - Python技术站

(0)
上一篇 2023年8月25日
下一篇 2023年8月25日

相关文章

  • .NET Core读取配置文件方式详细总结

    . 配置文件格式 在 .NET Core 应用程序中,最常用的配置文件格式是 JSON(JavaScript Object Notation)格式,可以通过 Newtonsoft.Json 这个 NuGet 包来实现。 在配置文件中,可以定义一些固定的属性,如连接字符串、应用程序的端口号、账号和密码等。 JSON 配置文件通常是通过键-值对存储的,如下所示:…

    other 2023年6月25日
    00
  • Spring createBeanInstance实例化Bean

    下面就是有关“Spring createBeanInstance实例化Bean”的完整攻略。 1. 什么是createBeanInstance 在Spring中,Bean的创建涉及多个步骤,其中实例化(Instantiation)是其中的一步。而createBeanInstance就是Spring中一个重要的方法,用于完成Bean的实例化过程。 在简单说明之…

    other 2023年6月26日
    00
  • 文件夹取其名称前两位重命名的批处理代码

    以下是关于如何用批处理代码重命名文件夹的攻略。 步骤一:打开Notepad或其他编辑器 首先,打开一个文本编辑器,例如Notepad,新建一个文件。请注意,您必须以管理员身份运行Notepad,这是因为你需要对文件夹进行重命名,这需要一些管理员权限。 步骤二:编写批处理代码 以下是编写批处理代码的步骤: 首先,你需要输入 “@echo off”(不带引号),…

    other 2023年6月26日
    00
  • 利用C++模拟实现STL容器:list

    利用C++模拟实现STL容器:list 1. 概述 在模拟实现STL容器:list之前,我们首先需要理解STL容器:list的特点和功能。 STL容器:list 是C++标准模板库中的一个双向链表容器。它允许在任意位置插入、删除元素,可以高效地在头部和尾部进行插入和删除操作。STL容器:list 的实现需要维护链表的数据结构,并提供操作链表的接口。 在这个攻…

    other 2023年6月28日
    00
  • iPhone死机怎么办 苹果手机各机型强制重启方法

    iPhone死机怎么办:苹果手机各机型强制重启方法 原因分析 iPhone死机通常是因为系统或应用程序的故障导致的。这种情况下,我们需要通过强制重启设备来解决问题。 强制重启iPhone的方法 下面是iPhone不同机型强制重启的具体操作步骤。 iPhone X及以后机型 长按侧面的“音量上”和“音量下”按键,直到出现“滑动关机”提示; 松开按键,再长按侧面…

    other 2023年6月27日
    00
  • Windows7系统如何批量提取文件名?

    Windows7系统提供了多种方法来批量提取文件名,以下是详细攻略: 1. 使用“cmd”命令行 打开“cmd”命令行,进入你想要提取文件名的目录 输入以下命令: dir /b > filename.txt 这会将当前目录下所有文件的名称(不包括子目录)输出到“filename.txt”文件中。3. 按回车键执行命令后,将在当前目录下生成“filena…

    other 2023年6月26日
    00
  • postman使用cookie

    Postman使用Cookie 在API开发中,我们常常需要通过请求头或者请求参数来传递认证信息或者标识用户身份,其中Cookie就是最常用的一种传递方式之一。Postman作为一种强大的API测试工具,也支持使用Cookie来进行测试。 什么是Cookie? Cookie(通常也称为浏览器Cookie或HTTP Cookie),指某些网站为了辨别用户身份、…

    其他 2023年3月28日
    00
  • dotnet封装的kindeditor编辑器控件

    下面是关于“dotnet封装的kindeditor编辑器控件”的完整攻略: 1. 安装kindeditor编辑器控件 首先需要在项目中安装kindeditor编辑器控件。在NuGet包管理器中安装kindeditor.autocomplete。 2. 添加kindeditor的css和js文件 在标记中添加kindeditor的样式和js文件: <he…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部