iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android对话框与相册一体
  • 538
分享到

Android对话框与相册一体

Android 2022-06-06 13:06:15 538人浏览 泡泡鱼
摘要

package com.mycompany.myapp; import Android.*; import android.annotation

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();
        }
    }
}

作者:亡灵丶小尘


--结束END--

本文标题: Android对话框与相册一体

本文链接: https://www.lsjlt.com/news/28911.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Android对话框AlertDialog详解
    目录1.创建AlertDialog1.1 布局文件代码如下:1.2 MainActivity的主要代码如下所示:2.普通提示对话框3.普通列表对话框4.单选对话框5.复选对话框6.自...
    99+
    2024-04-02
  • 怎么在Android中实现一个对话框
    怎么在Android中实现一个对话框?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。2个按钮public class MainActivity ...
    99+
    2023-05-30
    android
  • android对话框如何使用
    Android对话框可以通过AlertDialog类来使用,以下是一个简单的示例:1. 创建AlertDialog.Builder对...
    99+
    2023-08-23
    android
  • Android对话框AlertDialog与DatePickerDialog及TimePickerDialog使用详解
    目录一、提醒对话框AlertDialog二、日期对话框DatePickerDialog第一种-点击选择日期出现日历第二种-滚动选择日期三、时间对话框TimePickerDialog方...
    99+
    2024-04-02
  • Android AlertDialog(对话框)实例详解
    目录1.创建AlertDialog1.1 布局文件代码如下:1.2 MainActivity的主要代码如下所示:2.普通提示对话框3.普通列表对话框4.单选对话框4、复选对话框6、自...
    99+
    2024-04-02
  • Android中怎么实现对话框
    这篇文章将为大家详细讲解有关Android中怎么实现对话框,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 弹出普通对话框 --- 系统更新 //弹出普通对话框 &nbs...
    99+
    2023-05-30
    android
  • PyQt5如何实现字体对话框
    这篇文章主要介绍“PyQt5如何实现字体对话框”,在日常操作中,相信很多人在PyQt5如何实现字体对话框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PyQt5如何实现字体对话框”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • android如何自定义对话框
    这篇文章给大家分享的是有关android如何自定义对话框的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果  定义dialog.xml (res/layout/dialog.xml)<...
    99+
    2023-06-22
  • Android对话框AlertDialog.Builder如何使用
    AlertDialog是Android系统中常用的对话框,用于显示一些提示信息或者获取用户的输入。以下是使用AlertDialog....
    99+
    2023-08-16
    Android
  • Android studio自定义对话框效果
    本文实例为大家分享了Android studio自定义对话框效果的具体代码,供大家参考,具体内容如下 实现步骤: 第一步:自定义.xml布局文件 <?xml ver...
    99+
    2024-04-02
  • Android对话框如何使用方法
    Android中对话框的使用方法有以下几种:1. 使用AlertDialog.Builder创建对话框```javaAlertDia...
    99+
    2023-08-08
    Android
  • android怎么设置对话框宽度
    在Android中,可以使用Dialog类来创建对话框,并且可以通过setLayoutParams()方法来设置对话框的宽度。首先,...
    99+
    2023-08-23
    android
  • Android对话框使用方法详解
    对话框(Dialog)是Android系统在Activity或者其他组件运行过程中提供的一种提示机制。它可以帮助应用完成一些必要的提示功能,同时提供一些与用户交互的功能。 对话框分为...
    99+
    2024-04-02
  • Android对话框AlertDialog的示例分析
    这篇文章将为大家详细讲解有关Android对话框AlertDialog的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。AlertDialog可以在当前的界面上显示一个对话框,这个对话框是置顶于所有...
    99+
    2023-06-22
  • Android中如何自定义对话框
    本文小编为大家详细介绍“Android中如何自定义对话框”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中如何自定义对话框”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。本文测试的harbor的版本是...
    99+
    2023-06-29
  • android自定义带箭头对话框
    本文实例为大家分享了android自定义带箭头对话框的具体代码,供大家参考,具体内容如下 import android.content.Context; import andr...
    99+
    2024-04-02
  • 怎么在Android中自定义一个扁平化对话框
    这篇文章给大家介绍怎么在Android中自定义一个扁平化对话框,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Shamoo想到在Android平台上弄一个扁平化的对话框。参考过一篇帖子,然后改了一下。这个Demo比较简单...
    99+
    2023-05-31
    android
  • Android开发中使用TimePickerDialog实现一个时间对话框
    Android开发中使用TimePickerDialog实现一个时间对话框?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先要做的是声明一个日历类的对象: priva...
    99+
    2023-05-31
    android tim timepickerdialog
  • android自定义对话框实例代码
    1.实现效果    2.定义dialog.xml (res/layout/dialog.xml) <?xml version="1.0" encoding="utf...
    99+
    2024-04-02
  • Android中如何使用系统对话框
    Android中如何使用系统对话框,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。目录一、系统对话框的几种类型与实现在项目的实际开发中,用到的系统对话框几乎是没有的。原因大概包含...
    99+
    2023-05-30
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作