1.android 已知本地图片的路径,如何将他设为imageview的背景
android已知本地图片的路径,将他设为imageview的背景,文件夹的路径:
1. String img_path = "image will be with image type";
2. Bitmap bmp= BitmapFactory.decodeFile(img_path);
3. ImageView iv= (ImageView)findViewById(R.id.img);
4. iv.setImageBitmap(bmp)。
添加文件的权限:
1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.android 调用相册的图片 图片无法找到 路径应该怎么写
先引入Environment类,然后调用()函数获得sd卡路径,然后连接在你的filename前面,应该就可以解决.
具体:
import android.os.Environment;
File f = new File(Environment.() + fileName);
其他用到fileName的地方类似.
另外,读写sd卡需要在AndroidManifest.xml文件内加入权限,具体:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3.Android 保存图片到本地
这里只介绍按下“保存”后如何将一个Bitmap对象保存为图片文件的执行步骤,对图片的下载,图片到Bitmap对象的转换,Bitmap对象的格式转换和压缩,以及界面设计部分全部都忽略了。
确定存储路径获取外部存储权限确定外部存储状态确定文件名保存到文件中发送广播,通知系统扫描保存后的文件 确定存储路径 在Android中文件存储路径包括内部存储和外部存储两种类型。 对内部存储,当一个app被安装到手机后,Android系统会在内部存储的/data/data/目录下创建一个以包名称命名的文件夹。
例如/data/data/com.sohu.inputmethod.sogou/。一个应用对内部存储的所有访问都被限制在这个文件夹中,也就是说Android应用只能在该目录中读取,创建,修改文件。
对该目录之外的其他内部存储中的目录都没有任何操作的权限。因此,如果将图片保存在内部存储中,只能被应用自身读取,其他应用均无法读取。
如果需要让系统图库,相册或其他应用能够找到保存的图片,必须将图片保存到外部存储中。对外部存储,当一个app被安装到手机后,Android系统会在外部存储的/Android/data/目录下创建一个以包名命名的文件夹(这里第一个/不是根路径,而是相对外部存储所挂载路径的相对路径)。
例如/storage/emulated/0/Android/data/com.sohu.inputmethod/。这个路径同样只能被应用自身读取,其他应用不能访问。
因此,也不能将图片保存在这个目录中。除外部存储的/Android目录之外的其他目录一般都是可以被其他应用访问的。
目前,大多数应用都会在外部存储的根路径下建立一个类似包名的多层目录,以存储需要共享的文件。例如/storage/emulated/0/sogou/image/。
还需要注意的是,很多查看图片的应用都支持按照文件夹来查看图片。如果将图片所在的文件夹取名为image,photo之类的,就无法和其他文件夹区分开,用户也不能识别该文件夹的用途。
因此最好取一个有区分度的文件夹名字,例如百度贴吧就保存在/tieba目录,微信是保存在/tencent/MicroMsg/WeiXin目录。由于Android系统的碎片化问题,不同设备上外部存储的路径很可能会不同,因此,不能直接使用/storage/emulated/0/作为外部存储的根路径。
Android SDK中 Environment类 提供了()方法来获取外部存储的根路径。示例如下:[java] view plain copyString dir = Environment.().getAbsolutePath() + "/tencent/MicroMsg/WeiXin/" 需要注意的是Environment.()返回的路径中最后一个字符不是/,如果需要创建子目录,需要在子目录的前后都加上/。
获取外部存储权限 由于需要在外部存储中写文件,需要在AndroidManifest.xml中增加如下的权限声明。[java] view plain copy
只有状态正常情况下才可以执行保存文件的操作。获取外部存储状态同样是通过Environment类,通过Environment.()可以得到一个字符串,来表示外部存储的状态。
同时在Environment类中定义了一系列的String常量表示不同的状态。在所有的状态中只有内部存储处于Environment.MEDIA_MOUNTED状态时才可以读写文件,因此,需要将获取到的状态和Environment.MEDIA_MOUNTED做比较,如果不是Environment.MEDIA_MOUNTED状态,就返回保存失败。
示例如下。[java] view plain copy//获取内部存储状态 String state = Environment.(); //如果状态不是mounted,无法读写 if (!state.equals(Environment.MEDIA_MOUNTED)) { return; } 确定文件名 保存的图片文件名可以由应用根据自身需要自行确定,一般来说需要有一个命名规则,然后根据命名规则计算得到文件名。
这里列举几种常见的命名规则。随机命名 这种命名规则是随机生成一个字符串或一组数字来对图片命名。
字符串可以通过UUID来生成,数字可以通过Random()类来生成,例如:[java] view plain copy//通过UUID生成字符串文件名 String fileName1 = UUID.randomUUID().toString(); //通过Random()类生成数组命名 Random random = new Random(); String fileName2 = String.valueOf(random.nextInt(Integer.MAX_VALUE)); 这种命名规则是按照数字从小到大的顺序来对图片命名。在程序启动时先获取图片文件名中当前最大数字的文件名,之后每保存一张图片就将数字加1即可。
时间命名 这种命名规则是根据保存图片的当前系统时间来对图片命名。系统时间可以通过System.currentTimeMillis()来获取,不过System.currentTimeMillis()获取到的时间是一个long型的整数,如果用它做文件名,无法通过文件名直接看出文件的具体保存时间。
可以通过SimpleDateFormat先对当前时间做格式化,然后再将其作为文件名来使用。例如:[java] view plain copy 使用这种命名规则来命名需要注意的是同一秒钟可能会有多张图片需要保存,在。
4.Android 往文件夹写入图片
步骤:
1、AndroidManifest.xml中配置SD卡写权限
2、java代码往SD卡写入图片信息
public static void saveBitmapToFile(Bitmap bitmap, String _file)
throws IOException {BufferedOutputStream os = null;
try {
File file = new File(_file); //新建图片
int end = _file.lastIndexOf(File.separator);
String _filePath = _file.substring(0, end); //获取图片路径
File filePath = new File(_filePath);
if (!filePath.exists()) { //如果文件夹不存在,创建文件夹
filePath.mkdirs();
}
file.createNewFile(); //创建图片文件
os = new BufferedOutputStream(new FileOutputStream(file));
bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //图片存成png格式。
} finally {
if (os != null) {
try {
os.close(); //关闭流
} catch (IOException e) {
Log.e(TAG_ERROR, e.getMessage(), e);
}
}
}
}
5.Android开发,图库获取图片路径
public class TestCameraActivity extends Activity implements OnClickListener{ private Uri mOutPutFileUri;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button takePiCButton = (Button) this.findViewById(R.id.button1);
takePiCButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
saveFullImage();
break;
default:
break;
}
}
private void saveFullImage(){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//文件夹aaaa
String path = Environment.().toString()+"/aaaa";
File path1 = new File(path);
if(!path1.exists()){
path1.mkdirs();
}
File file = new File(path1,System.currentTimeMillis()+".jpg");
mOutPutFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mOutPutFileUri);
(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1){
Uri imageUri = null;
if(data != null){
if(data.hasExtra("data")){
Bitmap thunbnail = data.getParcelableExtra("data");
//处理缩略图
}
}else{
//处理mOutPutFileUri中的完整图像
}
}
}
}
转载请注明出处育才学习网 » android本地路径怎么写