Android读取sdcard上的图片是非常简单的事情,下面用一个例子来说明这个问题。

首先,在sdcard上有一张已经准备好的img25.jpg


下面,需要做的是把这张图片读取到app中显示。做到如下的效果:


1、首先你要在AndroidManifest.xml申请读取sdcard的权限,加入一条语句之后,AndroidManifest.xml如下:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.sdcardread"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="18" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 向SDCard写入数据权限 -->    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name="com.sdcardread.MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>
2、之后在res\values\strings.xml修改这个app名称为“图片读取”,这步可以不做,只是为了程序更加美观。

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">图片读取</string>    <string name="action_settings">Settings</string></resources>
3、其次在res\layout\activity_main.xml中布置一个带id的Textview,一会儿的提示信息将写入这个Textview中,同时布置一个带id的线性布局。一会儿图片将会添加到这个线性布局里面去。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="24sp" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textSize="24sp" />    <LinearLayout        android:id="@+id/linearLayout1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >    </LinearLayout></LinearLayout>
4、整个程序的核心在MainActivity.java,代码如下,获取组件之后,先用Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);判断sdcard是否存在,之后使用Environment.getExternalStorageDirectory().getAbsolutePath();获取sdcard的绝对路径供Java的File类读取。最后创建一个ImageView对象,将其加载到线性布局linearLayout1之中。

package com.sdcardread;import java.io.File;import android.os.Bundle;import android.os.Environment;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;public class MainActivity extends Activity {private TextView textView1;private LinearLayout linearLayout1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView1 = (TextView) findViewById(R.id.textView1);linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);boolean isSdCardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);// 判断sdcard是否存在if (isSdCardExist) {String sdpath = Environment.getExternalStorageDirectory().getAbsolutePath();// 获取sdcard的根路径textView1.setText("sd卡是存在的。以下是sdcard下的img25.jpg!");String filepath = sdpath + File.separator + "img25.jpg";File file = new File(filepath);ImageView imageView = new ImageView(this);//创建一个imageView对象if (file.exists()) {Bitmap bm = BitmapFactory.decodeFile(filepath);// 将图片显示到ImageView中imageView.setImageBitmap(bm);linearLayout1.addView(imageView);}} else {textView1.setText("sd卡不存在!");}}}


更多相关文章

  1. Android(安卓)通过selector改变状态
  2. 初探Android中Window与DecorView
  3. Android(安卓)之 Fragment
  4. 画图技巧
  5. android图片叠加方法
  6. android 图片阅读 之 穹の思念
  7. Android中设置半个屏幕大小且居中的按钮布局 (layout_weight属性
  8. 学习Android界面设计的超级利器HierarchyView.bat
  9. Android评论功能的实现

随机推荐

  1. Android(安卓)文件压缩和解压
  2. android休眠与唤醒驱动流程分析
  3. Android(安卓)BaseAdapter 例子
  4. android 自编音乐播放器源代码
  5. android收发短信
  6. android EditView 文本密码显示与隐藏
  7. 使用Android系统自带的下拉刷新控件
  8. 视力测试Demo
  9. Android(安卓)studio XListView 插件应用
  10. Android(安卓)Develop Challenge