大家好,又见面了,我是全栈君。...第一种:採用系统的api直接使用: ContentResolver cr = getContentResolver(); String url = MediaStore.Images.Media.insertImage...IOException e) { // TODO: handle exception e.printStackTrace(); } 最后把整个方法贴出来: /** * 將ImageView...= null) { try { /*ContentResolver cr = getContentResolver(); String url = MediaStore.Images.Media.insertImage...android.os.Build.VERSION.RELEASE; String tempID = release.substring(0, 3); if(Double.parseDouble(tempID) >= 4.4){//安卓4.4以上版本号的时候使用这个
这个功能使用得极其广泛,几乎所有的App都喜欢在SD卡的根目录下建立一个自己专属的目录,用来存放各类文件和数据。 那么这么做有什么好处吗?我想了一下,大概有两点吧。...因为这会将用户的SD卡空间搞得乱糟糟的,而且即使我卸载了一个完全不再使用的程序,它所产生的垃圾文件却可能会一直保留在我的手机上。...Glide或其他图片加载框架,想在不借助第三方库的情况下直接将一个Uri对象解析成图片,可以使用如下代码: val fd = contentResolver.openFileDescriptor(uri...使用文件选择器 如果我们要读取SD卡上非图片、音频、视频类的文件,比如说打开一个PDF文件,这个时候就不能再使用MediaStore API了,而是要使用文件选择器。...这个情况确实是存在的,比如我之前使用的七牛云SDK,它的文件上传功能要求你传入的就是一个文件的绝对路径,而不支持传入Uri对象,大家应该也会碰到类似的问题。
最近遇到也一个需求:调用系统相机拍照,并且照片可以在系统相册显示。...关于照片显示在系统相册这个问题,因为安卓机型太多了,各大厂商都对原生系统进行了不同程度的定制,所以在一般情况下,有的手机会把图片直接显示在相册最前方,但是有的手机却只能在二级文件夹内找到我们拍的照片,两张情况如下图所示...这个问题我和朋友们讨论之后觉得最有可能的原因就是手机系统对这些App进行了特殊处理,为了验证这个想法,我做了一个实验。...为了验证微信的图片路径是否被“特殊处理”了做的实验: 首先找到微信图片在本机的存储路径,我的手机是小米5,所以它的路径是:sd卡根目录+/Tencent/MicroMsg/WeiXin/; 在自己的...拍照成功后在onActivityResult通知图库刷新 try { MediaStore.Images.Media.insertImage(getContentResolver(), imagePath.getAbsolutePath
为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被授予了对外部存储空间的分区访问权限(即分区存储)。...的库时,无法使用 File Api,造成了很多困难。...,确实找到了一小段不起眼的文字 使用直接文件路径和原生库访问文件 为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 通过直接文件路径访问共享存储空间中的媒体文件...(枉我开始我还鄙视它 2、Android 11 的时候也不需要适配啥了,虽然 requestLegacyExternalStorage 属性失效,但相册里通过 File Api 访问的只是媒体库文件,不会有任何问题...欢迎关注我,分享Android干货,交流Android技术。 对文章有何见解,或者有何技术问题,欢迎在评论区一起留言讨论! image.png
startActivityForResult(intent, IMAGE_REQUEST_CODE); } }); 不同手机返回图片uri不同,此处进行转换 可以不添加...activity中 switch (requestCode) { case IMAGE_REQUEST_CODE://这里的requestCode是我自己设置的,就是确定返回到那个...,但由于图片路径生成可能有一定延时,所以这里开一个线程等待: /*定义一个Handler,定义延时执行的行为*/ public void chnage(){ new Thread(){...Bitmap bitmap; //判断返回到的Activity private static final int IMAGE_REQUEST_CODE = 0; //图片路径 private String....setImageBitmap(bitmap); } super.handleMessage(msg); } }; 如有疑问欢迎在评论区指出,欢迎关注我获得更多资讯
ZoomButton ImageView(图像视图),直接继承自View类,它的主要功能是用于显示图片,实际上它不仅仅可以用来显示图片,任何Drawable对象都可以使用 ImageView来显示。...简单使用 下面我们简单的介绍 ImageView的使用(再此示例中,需要使用到一个ic_luffy.png的图片,需要放到res文件夹下drawable文件夹中): ?...这就不得不要说一下 android:src属性和 android:background的区别了: 在API文档中我们发现 ImageView有两个可以设置图片的属性(任意继承自 View的控件都包含 background...打开相册加载图片 看了上述的一个demo展示,可能有的小伙伴表示太麻烦了,难道我得找到每张图片的路径才可以去加载图片嘛?...):使用 Bitmap 位图设置该 ImageView 显示的图片。
ient/service的架构,有两个进程:一个是client进程,可以看成是AP端,主要包括java代码与一些native c/c++代码;另一个是Service进程,属于服务端,是native c...File(imgPath)));} 假设不传参数MediaStore.EXTRA_OUTPUT的情况下,onActivityResult函数在resultCode为RESULT_OK的情况下,data...的方法,经过手机实测除了我们设定的路径下有照片外,在手机存储卡上也会保存一份照片,默认目录为sdcard/dcim/camera下面,我曾经尝试着想如果每次返回可以取得sdcard/dcim/camera...下面的路径就好了,但是目前看来没办法直接获得,可以借助MediaStroe每次去查询最后一条照片记录,应该也是可行的。...例2、 实现摄像 在摄像功能时,尝试着设置MediaStore.EXTRA_OUTPUT以传入类似拍照时的文件路径,结果在我的测试真机上,那个视频文件居然是一个0k的空文件,最后通过类似如下代码实现 Intent
大家好,又见面了,我是你们的朋友全栈君。 这是属于我的第一篇博文,首先说明一下,文章属性为原创,其实不能说是原创,我是在学习的过程中根据自己的理解整理的。...现在,我就根据自己学习的过程,将这部分只是进行整理,如下: public class MainActivity extends AppCompatActivity { private Button..., //比较好的做法是声明一个全局常量比较好,我在这里没有这么做。...,就是要获取图片的真实路径imagepath,然后我们会再提供一个方法将imagepath作为参数来显示图片 String imagepath = null; //android4.4...,则使用普通方法处理 imagepath = getImagepath(uri, null); } displayImage
我对Glide 4进行了一个大概的研究之后,发现Glide 4并不能算是有什么突破性的升级,而更多是一些API工整方面的优化。...下面我们就来学习一下Glide占位图功能的使用方法,首先我事先准备好了一张loading.jpg图片,用来作为占位图显示。...而DiskCacheStrategy.AUTOMATIC是Glide 4中新增的一种缓存策略,并且在不指定diskCacheStrategy的情况下默认使用就是的这种缓存策略。...有了这个对象之后你可以使用它进行任意的逻辑操作,这里我只是简单地把它显示到了ImageView上。...使用Generated API Generated API是Glide 4中全新引入的一个功能,它的工作原理是使用注解处理器 (Annotation Processor) 来生成出一个API,在Application
大家好,又见面了,我是你们的朋友全栈君。...//定义一个保存图片的File变量 private File currentImageFile = null; private Uri currentImageUri=null; /** * * 自己定义一个保存路径...img_show.setImageURI(currentImageUri); 方式二:直接使用图片,不存储,img_show是Imageview Bundle bundle = data.getExtras...MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, “title”, “description...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
使用步骤 这里我是通过一个简单的demo来讲解怎么去实现这个功能。...然后接下来让我们想想这个功能怎么去实现: 首先打开相册,那么肯定要通过隐式启动相册activity;然后相册返回一个路径,我们就拿这个路径把路径上对应的照片展示出来。...启动活动选择完照片后就会返回一个intent到onActivityResult方法中,所以接下来的主要工作就是如果获取到返回的路径。...首先我们知道不同的版本有两个不同的方法来展示图片,就是:handImage和handImageLow。...然后通过这个Cursor对象的MediaStore.Images.Media.DATA这个参数就可以获取到真实路径了。
--存放新的图片--> ImageView android:id="@+id/ifo_image...imageView01; //消息发送按钮 Button button01_send ; //记录数组长度 int arr_num = 0; //定义一个数组...String[] arr1 = new String[arr_num]; //从相册获得图片 Bitmap bitmap; //判断返回到的Activity private...} } }); } /*定义一个Handler,定义延时执行的行为*/ public void chnage(){ new...activity中 switch (requestCode) { case IMAGE_REQUEST_CODE://这里的requestCode是我自己设置的,
这个技术应该算是十分稀松平常了,但是对于小白来说,还是要费一番功夫的。因此在这里贴上我的代码,也是为了以后用到的时候方便找。。。...(SD卡),test.png为一个临时文件,每次拍照后这个图片都会被替换 openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)...(SD卡),test.png为一个临时文件,每次拍照后这个图片都会被替换 intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult...@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //另外,使用保存文件之后再读取而不是直接用...data的原因是,这里返回的data是一个缩略图,十分不清晰 if (requestCode == CAMERA_REQUEST_CODE) {// 将保存在本地的图片取出并缩小后显示在界面上
大家好,又见面了,我是全栈君。 Android调用系统api使用照相机功能,实现拍照获取图片以及从照相机库中获取指定图片的功能。 下面是演示样例代码: <?...); fileUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "temp.jpg")); //图片存放路径...); intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); startActivityForResult(intent, 100);...的大小按一定比例缩小图片 }else { factor = 1; } opts.inSampleSize = factor; opts.inJustDecodeBounds...的大小按一定比例缩小图片 }else { factor = 1; } opts.inSampleSize = factor; opts.inJustDecodeBounds
之前我是奔着功能实现去做的,所以很多的细节并没有想的太多,思虑再三之后打算重新做一个更换背景的功能。...中的dependencies闭包下新增一个依赖库 api 'com.google.android.material:material:1.2.0'//更强 我之前的是1.1.0,那么你可以改成1.2.0...因为普通的ImageView没有圆角啊,说道圆角图片我相信你不会陌生,你可能想到自定义ImageView来实现、或者使用第三方库来实现,但是ShapeableImageView里面就自带了圆角的样式给你...因为我要使用瀑布流,哪种错落感,会给用户不一样的体验,因为不设置高度,是因为需要动态设置ImageView的高度,来实现这个错落感。OK,下面该写这个Adapter了。...其他优化 我记得我之前说过有空就要优化那个搜索城市页面的弹窗,之前用的原生的比较的丑。所以现在自己创建了一个布局,在app中的layout下创建一个dialog_tip.xml <?
,可以使用它的有参构造函数来进行创建。...= 图片的总像素 * 每个像素占用的大小 单色位图:只能表示2种颜色 使用两个数字:0和1 使用一个长度为1的二进制数字就可以表示了 每个像素占用1/8个字节 16色位图:能表示16...0000 - 1111 1111 使用一个长度为8的二进制数字 每个像素占用1个字节 24位位图: 每个像素占用24位,也就是3个字节,所在叫24位位图 R:0-255,需要一个长度为8的二进制数字...保存图片 SD每次准备的时候,系统其实是遍历sd卡所有文件,系统会把所有的多媒体文件,都在MediaStore数据库中生成一个索引,数据库中保存了文件的文件名、路径、大小、长度和艺术家 图库、音乐、视频程序每次启动时...,把遍历到的所有多媒体文件都在MediaStore数据库保存一个索引,这个索引包含多媒体文件的文件名、路径、大小 图库每次打开时,并不会去遍历sd卡获取图片,而是通过内容提供者从MediaStore数据库中获取图片的信息
String user_num; /** * ATTENTION: This was auto-generated to implement the App Indexing API...*/ /* 定义一个Handler,定义延时执行的行为 */ public void chnage(){ new Thread(){...activity中 switch (requestCode) { case IMAGE_REQUEST_CODE://这里的requestCode是我自己设置的,...String[] arr1 = new String[arr_num]; //从相册获得图片 Bitmap bitmap; //判断返回到的Activity private...static final int IMAGE_REQUEST_CODE = 0; //图片路径 private String path ; //图片路径 Uri uri
API19前后获取相册图片路径 详见(仅客户端代码),请移步:本人GITHUB Intent intent = new Intent(); // Set an explicit MIME data...以下是一个和数据库有关的索引值 System.out.println("path:" + path); // path_above19...,获取图片的路径:低版本的是没问题的,但是sdk>19会获取不到 String[] proj = {MediaStore.Images.Media.DATA}; //好像是...null, null); //获得用户选择的图片的索引值 int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA...Level,比如我的是10, * 因此,AS检查我调用的API后,发现版本号不能向低版本兼容, * 比如我用的“DocumentsContract.isDocumentUri(context
高效的加载大尺寸位图 图片有各种形状和大小. 在很多情况下,它们有更大的需要超过一个典型的应用程序的界面。...既然你正在使用有限的内存,理想情况下,你只应该在内存中加载一个低分辨率的版本的图片。低分辨率版本的图片应该匹配你要显示的UI组件的尺寸。...这个技术允许你读取位图数据的尺寸和类型而不构造位图对象(分配内存)。...另外 在 Android 3.0 (API 级别 11)之前,一个位图的后台数据被存放在原始内存中,它不能以可预见的方式被释放,它潜在性的导致一个应用临时的超出它的内存限制而崩溃。...在activity被重新创建后,这个重新创建的(保留的)的 Fragment 被重新附加,这样你重新通过它获得到缓存对象,允许图像被快速提取和重新填充到 ImageView 对象。
领取专属 10元无门槛券
手把手带您无忧上云