Android学习笔记进阶十三获得本地全部照片

这是Intent的一个用法。

在ActivityAction里面有一个“ACTION_GET_CONTENT”字符串常量,该常量让用户选择特定类型的数据。

intent.setType("image/*");  选择本地所有的图片。

返回该数据的URI.我们利用该常量生成该图片的位图Bitmap,然后为添加到图片控件(ImageView)上就行了。

选择你想要的图片:

main.xml

[java] view plain copy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button
  8. android:id="@+id/button"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. />
  12. <ImageView
  13. android:id="@+id/image"
  14. android:layout_width="fill_parent"
  15. android:scaleType="fitXY"
  16. android:layout_height="wrap_content"
  17. />
  18. </LinearLayout>

[java] view plain copy

  1. package xiaosi.image;
  2. import java.io.FileNotFoundException;
  3. import android.app.Activity;
  4. import android.content.ContentResolver;
  5. import android.content.Intent;
  6. import android.graphics.Bitmap;
  7. import android.graphics.BitmapFactory;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.Button;
  14. import android.widget.ImageView;
  15. public class ImageActivity extends Activity {
  16. /** Called when the activity is first created. */
  17. private Button button = null;
  18. private ImageView imageView = null;
  19. @Override
  20. public void onCreate(Bundle savedInstanceState) {
  21. super.onCreate(savedInstanceState);
  22. setContentView(R.layout.main);
  23. button = (Button)findViewById(R.id.button);
  24. button.setText("选择图片");
  25. button.setOnClickListener(new ButtonListener());
  26. }
  27. private class ButtonListener implements OnClickListener{
  28. public void onClick(View v)
  29. {
  30. Intent intent = new Intent();
  31. /* 开启Pictures画面Type设定为image */
  32. intent.setType("image/*");
  33. /* 使用Intent.ACTION_GET_CONTENT这个Action */
  34. intent.setAction(Intent.ACTION_GET_CONTENT);
  35. /* 取得相片后返回本画面 */
  36. startActivityForResult(intent, 1);
  37. }
  38. }
  39. @Override
  40. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  41. if (resultCode == RESULT_OK) {
  42. Uri uri = data.getData();
  43. Log.e("uri", uri.toString());
  44. ContentResolver contentResolver = this.getContentResolver();
  45. try {
  46. Bitmap bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
  47. imageView = (ImageView) findViewById(R.id.image);
  48. /* 将Bitmap设定到ImageView */
  49. imageView.setImageBitmap(bitmap);
  50. }
  51. catch (FileNotFoundException e){
  52. Log.e("Exception", e.getMessage(),e);
  53. }
  54. }
  55. super.onActivityResult(requestCode, resultCode, data);
  56. }
  57. }

源代码:点击打开链接

时间: 2024-08-28 08:21:05

Android学习笔记进阶十三获得本地全部照片的相关文章

Android学习笔记(十三)——碎片(一)

碎片 碎片可看作另外一种形式的活动,可以创建碎片来包含视图. 碎片总是嵌入在活动中,一般有两种常见形式: 1.碎片A和碎片B分别处于不同的活动中,当选择碎片A中的某一项时,触发碎片B启动: 2.碎片A和碎片B处于同一个活动中,共享同一活动,以创建更佳的用户体验. 点此下载完整源码~(代码适用于本文章所讲) 1.创建一个名为"Fragments"的项目,在res/layout文件夹下,分别新建fragment1.xml.fragment2.xml:在当前包名下,分别新建Fragment1

Android学习笔记进阶16之BitmapShader

<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲染器(Shader). bitmap   在渲染器内使用的位图 tileX      The tiling mode for x to draw the bitmap in.   在位图上X方向花砖模式 tileY  

Android学习笔记进阶之在图片上涂鸦(能清屏)

Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java [java] view plaincopy package xiaosi.handWriting; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import andro

Android学习笔记进阶18之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

Android学习笔记进阶18 之画图并保存图片到本地

1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如"/sdcard/song/"如果不存在的话,要先创建(file.mkdirs).. 4.需要添加权限:<uses-permission Android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> Canvas是一个画布,你可以建

【转】Pro Android学习笔记(十三):用户界面和控制(1):UI开发

目录(?)[-] UI开发 方式一通过XML文件 方式二通过代码 方式三XML代码 UI开发 先理清一些UI概念: view.widget.control:这三个名词其实没有什么区别,都是一个UI元素,例如一个button.Container(容器):包含其他view,例如grid可以认为是容器,它有cell,每个cell可以是一个view.Layout: 对容器们和view们的排版,可以包含其他layout. Android提供常用的UI(例如文字框)以及适合移动设备的控制,基础类为andro

Android学习笔记(十三)——广播机制

 //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应用程序的.Android 提供了一套完整的 API,允许应用程序自由地发送和接收广播. 一.广播的类型: Android 中的广播主要可以分为两种类型,标准广播和有序广播. 1)标准广播(Normal broadcasts)是一种完全异步执行的广播,在广播发出

Android学习笔记(十三) Handler

可用于解决上一则笔记所提到的WorkerThread无法修改UI控件的问题 一.Handler.Looper和MessageQueue的基本原理 Handler把消息对象放到MessageQueue当中,而Looper负责在消息队列头部不断取出消息对象.取出的对象再交给Handler处理. 二.一个简单的Handler例子 -先创建一个继承Handler的类,注意是导入Android.os.Handler(非常重要) class firstHandler extends Handler{} -复

Android学习笔记二十三.Service组件入门(一).什么是Service?

什么是Service? 一.Service 1.Service简介 Service为Android四大组件之一,Service与Activity组件相似,都代表可执行的程序且有自己的生命周期,唯一的区别是Activity组件提供界面方便人机交互而Service只在后台运行且没有交互界面.需要注意的是,Service不是一个单独的进程或为了防止应用出现无反应错误单独的线程,它像其他应用对象一样运行在其托管进程的主线程中.当然,如果我们希望自己的Service能够在后台运行MP3或者网络下载,我们可