我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android对话框与相册一体

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android对话框与相册一体

package com.mycompany.myapp;
import android.*;
import android.annotation.*;
import android.content.*;
import android.content.pm.*;
import android.database.*;
import android.graphics.*;
import android.net.*;
import android.os.*;
import android.provider.*;
import android.support.v4.app.*;
import android.support.v4.content.*;
import android.support.v7.app.*;
import android.view.*;
import android.widget.*;
import com.mycompany.myapp.*;
import android.util.*;
import java.io.*;
import android.support.annotation.*;
public class Grzxmain extends AppCompatActivity
{
    ImageView toux;
    protected void onCreate(Bundle savedInstanceState)
	{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grzx);
		toux = findViewById(R.id.imageview_toux);
        toux.setOnClickListener(new View.OnClickListener() {
				@Override
				public void onClick(View view)
				{
					AlertDialog.Builder builder = new AlertDialog.Builder(Grzxmain.this);
					builder.setTitle("选择头像方式");
					builder.setMessage("请选择。");
					builder.setPositiveButton("相机", new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog, int which)
							{
								xiangji();
							}
						});
					builder.setNegativeButton("相册", new DialogInterface.OnClickListener() {
							@Override
							public void onClick(DialogInterface dialog, int which)
							{
								if (ContextCompat.checkSelfPermission(Grzxmain.this, Manifest.permission
																	  .WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
								{
									ActivityCompat.requestPermissions(Grzxmain.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
								}
								else
								{
									//执行启动相册的方法
									openAlbum();
								}
							}
						});
					builder.show();
				}
			});
    }
	//相机
	static final int REQUEST_IMAGE_CAPTURE = 1;
	private void xiangji()
	{
		Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (takePictureIntent.resolveActivity(getPackageManager()) != null)
		{
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
		}
	}
//获取权限的结果
	@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
	{
        if (requestCode == 1)
		{
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) openAlbum();
            else Toast.makeText(Grzxmain.this, "你拒绝了", Toast.LENGTH_SHORT).show();
        }
    }
//启动相册的方法
	private void openAlbum()
	{
        Intent intent = new Intent("android.intent.action.GET_CONTENT");
        intent.setType("image/*");
        startActivityForResult(intent, 2);
    }
	@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
	{
		if (requestCode == 2)
		{
			//判断安卓版本
 			if (resultCode == RESULT_OK && data != null)
			{
                if (Build.VERSION.SDK_INT >= 19)
					handImage(data);
                else handImageLow(data);
            }
        }
		if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK)
		{
            Bundle extras = data.getExtras();
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            toux.setImageBitmap(imageBitmap);
        }
    }
//安卓版本大于4.4的处理方法
	@RequiresApi(api = Build.VERSION_CODES.KITKAT)
    private void handImage(Intent data)
	{
        String path =null;
        Uri uri = data.getData();
        //根据不同的uri进行不同的解析
        if (DocumentsContract.isDocumentUri(this, uri))
		{
            String docId = DocumentsContract.getDocumentId(uri);
            if ("com.android.providers.media.documents".equals(uri.getAuthority()))
			{
                String id = docId.split(":")[1];
                String selection = MediaStore.Images.Media._ID + "=" + id;
                path = getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, selection);
            }
			else if ("com.android.providers.downloads.documents".equals(uri.getAuthority()))
			{
                Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(docId));
                path = getImagePath(contentUri, null);
            }
        }
		else if ("content".equalsIgnoreCase(uri.getScheme()))
		{
            path = getImagePath(uri, null);
        }
		else if ("file".equalsIgnoreCase(uri.getScheme()))
		{
            path = uri.getPath();
        }
        //展示图片
        displayImage(path);
    }
//安卓小于4.4的处理方法
	private void handImageLow(Intent data)
	{
        Uri uri = data.getData();
        String path = getImagePath(uri, null);
        displayImage(path);
    }
//content类型的uri获取图片路径的方法
	private String getImagePath(Uri uri, String selection)
	{
        String path = null;
        Cursor cursor = getContentResolver().query(uri, null, selection, null, null);
        if (cursor != null)
		{
            if (cursor.moveToFirst())
			{
                path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
            }
            cursor.close();
        }
        return path;
    }
//根据路径展示图片的方法
	private void displayImage(String imagePath)
	{
        if (imagePath != null)
		{
            Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
            toux.setImageBitmap(bitmap);
        }
		else
		{
            Toast.makeText(this, "fail to set image", Toast.LENGTH_SHORT).show();
        }
    }
}

作者:亡灵丶小尘


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android对话框与相册一体

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android对话框与相册一体

package com.mycompany.myapp; import android.*; import android.annotation.*; import android.content.*; import android.con
2022-06-06

怎么在Android中实现一个对话框

怎么在Android中实现一个对话框?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。2个按钮public class MainActivity extends Activit
2023-05-30

Android实现单选与多选对话框的代码

android开发中实现单选与多选对话框的代码非常简单,具体代码如下所示:public void myClick(View view) {// 单选对话框//singleCheckDialog();// 多选对话框mulCheckDialo
2022-06-06

Android开发中使用TimePickerDialog实现一个时间对话框

Android开发中使用TimePickerDialog实现一个时间对话框?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先要做的是声明一个日历类的对象: private Ca
2023-05-31

怎么在Android中自定义一个扁平化对话框

这篇文章给大家介绍怎么在Android中自定义一个扁平化对话框,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Shamoo想到在Android平台上弄一个扁平化的对话框。参考过一篇帖子,然后改了一下。这个Demo比较简单
2023-05-31

Android中创建一个透明的进度对话框实例

首先我们看一下什么叫做透明的进度对话框: 接下来我们讲一下如何创建:1、使用Eclipse创建一个新的Android 项目,使用Android 2.2或以上。2、在/res/layout文件夹,创建线性布局activity_main.xml
2022-06-06

如何在Android中利用Dialog实现一个对话框功能

今天就跟大家聊聊有关如何在Android中利用Dialog实现一个对话框功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、普通对话框AlertDialog.Builder bui
2023-05-31

如何在Android应用中使用AlertDialog实现一个对话框

本篇文章为大家展示了如何在Android应用中使用AlertDialog实现一个对话框,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、确定对话框AlertDialog.Builder builde
2023-05-31

Android开发中怎么实现一个对话框交互功能

本篇文章给大家分享的是有关Android开发中怎么实现一个对话框交互功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1. 在Android SDK中,虽然有许多的窗口,有些类
2023-05-31

android 对话框弹出位置和透明度的设置具体实现方法

例如,屏幕的上方或下方。要实现这种效果。就需要获得对话框的Window对象,获得这个Window对象有多种方法。最容易的就是直接通过AlertDialog类的getWindow方法来获得Window对象。 代码如下:AlertDialog
2022-06-06

Android开发之缓冲dialog对话框创建、使用与封装操作

本文实例讲述了Android开发之缓冲dialog对话框创建、使用与封装操作。分享给大家供大家参考,具体如下:package com.hstech.handysystem.prompt;import android.app.Dialog;i
2023-05-30

怎么在Android应用中利用控件实现一个对话框功能

怎么在Android应用中利用控件实现一个对话框功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、自定义提示对话框DialogM.Builder builder = new
2023-05-31

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录