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

当在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日

相关文章

  • 【干货】前端开发者最常用的六款ide

    【干货】前端开发者最常用的六款IDE 作为一名前端开发者,选择一款好的IDE是非常重要的。一个好的IDE可以提高你的开发效率,减少代码调试的时间。在这篇文章中,我将为大家推荐六款前端开发者最常用的IDE。 1. Visual Studio Code Visual Studio Code是由微软开发的一款免费的跨平台文本编辑器,支持智能提示、代码高亮、调试等功…

    其他 2023年3月29日
    00
  • Android与H5互调详细介绍

    下面是针对“Android与H5互调详细介绍”的完整攻略。实现Android与H5的数据交互,我们可以使用以下方法: 1. 使用JavascriptInterface 我们可以通过JavascriptInterface类在Android中定义一个Java的接口,用于接受H5页面获取的数据,并且可以向H5页面发送数据。 首先,在android代码中定义一个Ja…

    other 2023年6月27日
    00
  • dom4jpom依赖

    dom4j和pom依赖的完整攻略 什么是dom4j dom4j是一个Java XML API,它使得处理XML文档变得更加容易。它提供了一种简单的方式来遍历、修改和创建XML文档。dom4j还支持XPath查询和XSLT转换。 什么是pom依赖 pom依赖是Maven项目管理工具中的一种依赖管理方式。pom.xml文件中可以定义项目所依赖的库,Maven会自…

    other 2023年5月7日
    00
  • java多态的向上转型的概念及实例分析

    接下来我将为您详细讲解“Java多态的向上转型的概念及实例分析”的攻略。 目录 前言 什么是Java多态 什么是向上转型 实例分析1:父类引用指向子类对象 实例分析2:Java集合中的向上转型 总结 前言 在Java中,面向对象是一个重要的编程思想,而多态性是面向对象编程中最基本的概念之一。其中,向上转型是多态性的核心之一,本文将详细介绍Java多态的概念以…

    other 2023年6月26日
    00
  • python 读取DICOM头文件的实例

    Python 读取 DICOM 头文件是医学图像处理领域的重要任务之一,下面将为大家详细讲解 Python 读取 DICOM 头文件的实例攻略。 1. 安装 pydicom 库 pydicom 是一个十分流行的 Python DICOM 库,可以用于读取、解析和处理 DICOM 文件。需要先安装该库才能进行后续的操作。 pip install pydicom…

    other 2023年6月27日
    00
  • native.js获取手机硬件基本信息实例代码android版

    Native.js获取手机硬件基本信息实例代码(Android版)攻略 1. 简介 Native.js是一个用于在移动应用中访问原生功能的JavaScript库。它提供了一种简单的方式来获取手机硬件的基本信息,如设备型号、操作系统版本等。本攻略将详细介绍如何使用Native.js在Android应用中获取手机硬件基本信息。 2. 准备工作 在开始之前,确保你…

    other 2023年8月1日
    00
  • Java中的什么场景使用递归,如何使用递归

    Java中递归是一种非常重要的算法,它在很多场景下被广泛使用。递归是指函数自己调用自己,常用的递归方法有两种:直接递归和间接递归。下面将详细讲解什么场景下使用递归以及如何使用递归。 一、什么场景使用递归 1. 数据结构 递归在处理数据结构时是非常适用的,比如链表、二叉树等。 链表常常涉及到对其节点的遍历、搜索以及排序等,这些操作非常适用递归实现。 二叉树在计…

    other 2023年6月27日
    00
  • js单向链表的具体实现实例

    下面是js单向链表的具体实现实例的攻略。 理解单向链表 在讲解单向链表的具体实现之前,需要先理解什么是单向链表。单向链表是一种常见的数据结构,具有链式存储结构,是由一组节点 node 组成的,每个节点包含两个部分,一个是元素储存区 data,另外一个链指针 next。单向链表的每个节点都存储着下一个节点的地址,最后一个节点的指针为空。 创建单向链表 我们可以…

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