Android Studio实现读取本地相册文件并展示

news2024/9/28 13:28:59

目录

        • 原文链接
        • 效果
      • 代码
        • activity_main.xml
        • MainActivity

原文链接

效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码

activity_main.xml

需要有一个按钮和image来展示图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/btn_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="选择图片"
        android:layout_gravity="center"
        android:textColor="@color/white"
        />
    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="match_parent"
        android:layout_gravity="center_horizontal"
        android:layout_height="wrap_content"/>
</LinearLayout>

MainActivity

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {

    private Button btn_2;
    private ImageView iv_image;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.e(this.getClass().getName(), "onCreate");
        setContentView(R.layout.activity_main);
        btn_2 = findViewById(R.id.btn_2);
        iv_image = findViewById(R.id.iv_image);
        btn_2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, null);
                //调用setDataAndType方法,指定了选择的数据类型为图片
                //设置数据的URI为MediaStore.Images.Media.EXTERNAL_CONTENT_URI,表示选择外部存储中的图片
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
                //调用startActivityForResult方法,将Intent发送给系统,并指定一个请求码为2,以便在之后的回调中处理用户选择的图片
                startActivityForResult(intent, 2);
            }
        });
    }
    /*当启动的Activity返回结果时,会回调到onActivityResult方法中,其中的requestCode参数就是用于区分不同的请求的。
    在onActivityResult方法中,可以通过判断requestCode的值来确定是哪个请求返回的结果
    当requestCode等于2时,表示从相册选择图片的请求返回了结果。通过判断data是否为空,可以确定是否成功选择了一张图片。
    如果data不为空,则可以通过getData方法获取到选择的图片的URI,然后将该URI设置给ImageView控件来显示选择的图片
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 2) {
            // 从相册返回的数据
            Log.e(this.getClass().getName(), "Result:" + data.toString());
            if (data != null) {
                // 得到图片的全路径
                Uri uri = data.getData();
                iv_image.setImageURI(uri);
                Log.e(this.getClass().getName(), "Uri:" + String.valueOf(uri));
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889142.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题

华硕win11笔记本双系统deepin 解决更改硬盘模式为AHCI后无法进入Windows的问题 重新将硬盘模式改为Intel RST Premium With Intel Optane System Acceleration(RAID)然后才能进入Windows&#xff0c;但是改了之后又不能进deepin了&#xff0c;需要再将硬盘模式改为AHCI才能进de…

【100天精通python】Day37:GUI界面编程_PyQT从入门到实战(上)

目录 专栏导读 1 PyQt6 简介&#xff1a; 1.1 安装 PyQt6 和相关工具&#xff1a; 1.2 PyQt6 基础知识&#xff1a; 1.2.1 Qt 的基本概念和组件&#xff1a; 1.2.2 创建和使用 Qt 窗口、标签、按钮等基本组件 1.2.3 布局管理器&#xff1a;垂直布局、水平布局、网格布局…

生信豆芽菜-细胞丰度比较

网址&#xff1a;生信豆芽菜-细胞丰度比较 一、使用方法 1、数据准备 这里需要上传一个行为样本&#xff0c;列为细胞评分的矩阵数据 分组信息 2、选择检验的方法&#xff0c;其中两组的可以选择用wilcox.test/test&#xff0c;三组的可以选择用kruskat.test/anova 3、分组…

最强自动化测试框架Playwright(29)-文件选择对象

FileChooser对象通过page.on("filechoose")事件监听。 如下代码实现点击百度搜图按钮&#xff0c;上传文件进行搜索。 from playwright.sync_api import Playwright, sync_playwright, expectdef run(playwright: Playwright) -> None:browser playwright.chro…

php+echarts实现数据可视化实例2

效果: 代码 php <?php include(includes/session.inc); include(includes/SQL_CommonFunctions.inc); ?> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

notepad++正则表达式匹配方括号及里面的内容

可以用于去除注释 在notepad也可以直接使用 (\[.*?\])

【Redis】Redis 的学习教程(五)之 SpringBoot 集成 Redis

在前几篇文章中&#xff0c;我们详细介绍了 Redis 的一些功能特性以及主流的 java 客户端 api 使用方法。 在当前流行的微服务以及分布式集群环境下&#xff0c;Redis 的使用场景可以说非常的广泛&#xff0c;能解决集群环境下系统中遇到的不少技术问题&#xff0c;在此列举几…

【项目管理】PMP备考宝典-第三章《人》

文章目录 第一节&#xff1a;概述1.项目涉及的人2.项目经理3.团队4.干系人 第二节&#xff1a;原则1.有效的干系人参与2.成为勤勉尊重关心他人的管家3.创建协作的项目团队环境4.展现领导力行为 第三节&#xff1a;任务1.定义团队的基本原则2.建设团队3.领导团队4.管理冲突5.凝聚…

2022年工作架构分析

mpmw自动化流程工具 schema动态数据 Schema 本身是一个JSON &#xff0c;Schema 通过一些特定字段描述和定义 JSON的数据结构。 最常见的表单通过类XML语法定义。一些库支持通过一些特定结构的 JSON (Schema)来生成类XML标签。 formily 是其中实现之一。 表单设计器通过可视…

S03-快速填充,批量提取和组合数据的神奇

视频教程 快速填充&#xff08;Ctrl➕E&#xff09; 作用&#xff1a;对数据进行拆分重组合并 方式 1 CtrlE 2 双击加号选择智能填充 快速填充数据<>智能填充 开始☞填充☞快速填充&#xff08;注意附近一个单元格&#xff0c;是一定要有数据的&#xff0c;不能出现单独…

前后端分离-毕业生就业服务平台SpringBoot+Redis+Vue校园实习招聘指导java jsp源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 前后端分离-毕业生就业服务平台SpringBootRedisVue 系…

招生老师如何制作发布录取通知书文案?这个开发教程一看就会

作为一名负责招生的老师&#xff0c;录取通知的公布是整个招生环节最重要的一环&#xff0c;如何快速搞定这项工作&#xff1f;传统的公布方式需要设及技术开发、服务器搭建等&#xff0c;一起来看看传统方法制作录取通知查询系统的教程&#xff08;结尾有惊喜&#xff09;&…

高忆管理:股票T+0交易是什么意思?t+0交易有什么好处?

股票的买卖准则有很多种&#xff0c;T0买卖便是其中之一。那么股票T0买卖是什么意思&#xff1f;t0买卖有什么优点&#xff1f;高忆管理也为大家预备了相关内容&#xff0c;以供参考。 股票T0买卖是什么意思&#xff1f; T0买卖准则是指出资者当天买入的股票能够在当天卖出&am…

C++ 好用的包管理工具--vcpkg

背景 Windows 下开发 C/C 程序&#xff0c;少不了编译开源的第三方库&#xff0c;使用这些库开发极大的方便了程序员&#xff0c;使得我们不必重复造轮子。 由于开源库绝大部分都来源于 Linux 系统、将其移植到 Windows 的 VC 开发环境下编译比较复杂和麻烦&#xff1b;而且我…

Hi-TRS:骨架点视频序列的层级式建模及层级式自监督学习

论文题目&#xff1a;Hierarchically Self-Supervised Transformer for Human Skeleton Representation Learning 论文下载地址&#xff1a;https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136860181.pdf 代码地址&#xff1a;https://github.com/yuxiaochen1103…

K8S用户管理体系介绍

1 K8S账户体系介绍 在k8s中&#xff0c;有两类用户&#xff0c;service account和user&#xff0c;我们可以通过创建role或clusterrole&#xff0c;再将账户和role或clusterrole进行绑定来给账号赋予权限&#xff0c;实现权限控制&#xff0c;两类账户的作用如下。 server acc…

解决方案 | 电子签优化医药企业管理流程

疫情过后&#xff0c;居民健康意识显著增强&#xff0c;国家相继出台的健康行业的鼓励政策&#xff0c;也让整个医药行业得到了稳定持续的发展。但机遇往往意味着挑战&#xff0c;医药行业在迎来巨大发展的同时&#xff0c;也面临着内外部行业合规风险的挑战&#xff1a;从行业…

bug记录:微信小程序 给button使用all: initial重置样式

场景&#xff1a;通过uniapp开发微信小程序 &#xff0c;使用uview的u-popup弹窗&#xff0c;里面内嵌了一个原生button标签&#xff0c;因为微信小程序的button是有默认样式的&#xff0c;所以通过all: initial重置样式 。但是整个弹窗的点击事件都会被button上面的点击事件覆…

28、springboot的静态模版(前端页面)重加载和 devtools开发者工具

springboot的静态模版重加载和 devtools开发者工具 总结&#xff1a;实现静态模板重加载的两个方法 方法1&#xff1a;在 yml 配置文件&#xff0c;关闭页面模板缓存&#xff0c; 再按 ctrlf9 重新构建 方法2&#xff1a;直接添加 devtools 依赖&#xff0c;再按 ctrlf9 重新构…

c#设计模式-结构型模式 之 代理模式

前言 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时&#xff0c;访问对象不适合或者不能直接 引用目标对象&#xff0c;代理对象作为访问对象和目标对象之间的中介。在学习代理模式的时候&#xff0c;可以去了解一下Aop切面编程AOP切面编程_aop编程…