当前位置:首页 » 安卓系统 » android获取drawable

android获取drawable

发布时间: 2025-06-14 08:47:19

⑴ Android实现图库功能,查看本应用drawable下的所有图片,且能左右滑动切换上一页或下一页图片

使用ImageLoader
源码地址
https://github.com/nostra13/Android-Universal-Image-Loader
可以通过这个框架来加载以下类型的图片
"http://site.com/image.png" // from Web
"file:///mnt/sdcard/image.png" // from SD card
"file:///mnt/sdcard/video.mp4" // from SD card (video thumbnail)
"content://media/external/images/media/13" // from content provider
"content://media/external/video/media/13" // from content provider (video thumbnail)
"assets://image.png" // from assets
"drawable://" + R.drawable.img // from drawables (non-9patch images)

官网有例子,使用非常简单,一行代码搞定

⑵ Android知识点——Glide获取图片宽高

  先很负责任的说一下,这个内容也是网络来的,但是很不负责任的是,当初只记录解决方案,忘了记录是查看的哪篇博客了,这里先对不知道借鉴的谁表示感谢。无法分享链接,就厚着脸皮把(转)字去掉了,请大家谅解。

  先提供一下 Android知识点——目录 的链接,然后让我们进入正题。

  实际上,这篇博客所说的内容并不是所有人都可以用到,毕竟大多数时候,我们只需要展示图片,而并不需要知道图片的宽高;有的时候我们只需要知道展示的宽高(即ImageView)的宽高,不需要知道图片资源的实际尺寸。

  但是需求千千万万嘛,以程序员的脑洞,怎么能想到产品的脑洞究竟有多大呢?我这里就遇到了一个需求,那就是需要在一个可缩放的图片上标注icon(类似地图上的marker)。这还不算完,毕竟在找到的图片缩放控件 PhotoView 中,我们点击到图片上后,是有点击点位在整个图片上的百分比坐标回调的。而多端通过百分比是很容易就能在图片中获取到相同的点位,并回显出对应的icon的(没办法,谁让我找的是方便计算百分比的呢),结果Web端优先做了这部分功能,使用的是在原图上的具体坐标。这样我百分比的计划自然就落空了,只能想办法计算出具体的点位。

  因此获取图片的原始尺寸就是一个必不可少的环节,我刚刚网络了一下,查到 wangke_king 的 Android获取图片的宽度和高度 中使用的方法是:

  我这里没有亲测过,不过应该是没有问题,但是很遗憾我们的需求是在网络图片上做测量,所以这个方法也无法使用,不过如果其他有类似本地图片需求的,不妨尝试一下。而我之前找到的解决方案为:

  首先说明,上述的方法是可以实现图片的尺寸测量的,只是有一个小小的问题,那就是想要计算出Drawable的宽高,需要必须等到图片加载完成之后,尝试了使用view.post(),监听组件加载完成,但是并不是每次都能获取到Drawable的宽高,因此当初的解决方案是写了个两秒钟的定时器,每50毫秒测量一次,直到获取到值为止。这样的解决方案可谓是相当无脑了,而且还要消耗很多不必要的资源。
  还好皇天不负有心人啊,终于找到了通过Glide获取图片宽高的方式:

  这样我们就可以通过回调,在Glide将网络图片注入到对应的图片组件的时候,得到图片的Bitmap,然后在通过Bitmap来获取图片的宽高。但是需要注意的一点是,Bitmap的泛型是需要手动去设置的哦。
  另外SimpleTarget现在已经过时,暂时还没有查到。我搜索过SimpleTarget过时使用什么替换,有一些说法是使用BitmapImageViewTarget ,不过下面是实际测试结果。
图片链接:
网络图片-景色

测量结果:

图片信息:

如果不是我使用有误的话,BitmapImageViewTarget 是无法替换SimpleTarget ,实现测量图片原始宽高的功能的。

⑶ android获取drawable里面的图片的id和名字的方法

你好,看样子你可能是刚接触Android不久,我先就你想实现的问题给你解答。你问题的本质是要在ImageView上展示图片,你需要理解以下几点:
1、ImageView这个组件可以直接设置Bitmap和Drawable来展示图片,方法分别是setImageBitmap()和setImageDrawable()

2、根据(1)我们需要使用Drawable,Drawable可以由drawable目录里的图片资源生成,在这之前你需要理解一个概念,我们向drawable目录放入一张图片是需要命名的,比如图片名为sun.png,系统会帮助我们自动生成这个图片的id,如果想在java代码中引用这个图片就需要使用这个id,使用方式:R.drawable.sun。
3、使用系统方法将图片转换为Drawable。
Drawable drawable = getResources().getDrawable(R.drawable.sun);
imageView.setImageDrawable(drawable);
这样就可以将图片显示到ImageView上。
这里面使用的getResources()方法获取的Resources对象可以帮助我们获取很多资源文件,这个方法可以直接在Activity里使用,在其他地方需要使用Context对象调用。此外,Resources的getDrawable方法已被标记为过时,系统推荐使用两个参数的方法。getDrawable(int id, Theme theme),我们不需要设置Theme可以给null。
4、题外话
1)现在图片资源已经很少放在drawable目录里,而是放在mipmap目录,引用方式R.mipmap.xxx

2)你的问题涉及到id和名字,名字是你把图片放到目录时自己起的,命名要符合规范。而id则是由系统自动帮你生成,且是固定格式:R.drawable.xxx

⑷ android studio中的drawable-v24怎么创建

我们一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下。下面我们看下AndroidStudio下如何创建drawable、drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi。
1、切换到Project视图下,找到对应moudle的res文件夹,右击“res”--》 “new”--》“Android resource directory”,弹出“New Resource Directory”对话框。
2、按照上图的一二三步骤,点击第三步后,会出现一下内容,选择要添加drawable的分辨率,点击“ok”按钮即可。

⑸ drawable是什么意思

drawable是Android中的一个概念,可翻译为“可绘制资源”。它是指一类保存在应用资源文件中,可以用来展示图片、颜色、形状等具体内容的资源,这些资源可以通过代码进行访问和操作。最常见的就是用drawable来展示应用程序的图标和背景。drawable资源文件可以使用xml或图片格式存储,而且可以针对不同的设备屏幕密度使用不同的drawable资源文件。
在Android中,开发者可以通过XML或Java代码来设置可绘制资源。在XML中,可以通过添加一个drawable的属性值来设置View或布局的背景,例如设置一个Button的背景,在XML中可以添加以下代码:android:background="@drawable/my_button_bg";在Java代码中,可以使用Drawable类来访问可绘制资源文件并使用它们来设置View的背景或其他方面。
使用drawable作为应用程序资源的优势是可以为不同的设备提供适当的资源分辨率。在Android中,不同的设备具有不同的屏幕密度,开发人员可以通过使用drawable资源来根据屏幕密度提供不同的图像质量,从而提供更好的用户体验。此外,使用drawable还可以很好地组织和管理应用程序的内容。因为drawable资源可以存储在单个文件夹中,开发人员可以轻松地组织、分类和管理应用程序的各种资源。

⑹ android 如何将drawable中的图片保存到系统相册中

android 将drawable中的图片保存到系统相册中的原理比较简单,获取到的bitmap,然后通过的compress方法写到一个fileoutputstream中. 再通知MediaScannerService有图片文件加入就可以了.
保存图片的核心代码如下:
Bitmap bitmap= BitmapFactory.decodeResource(getResources(), R.drawable.icon);
MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, name, "");
或者
FileOutputStream fos = openFileOutput("image", Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
//发送系统通知消息
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
另一种方法是直接使用文件流读写:
InputStream is = mContext.getResources().openRawResource(PicID);
FileOutputStream fos = new FileOutputStream(LogoFilePath);
byte[] buffer = new byte[8192];
int count = 0;
while((count=is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
这里要注意目录权限问题:在应用程序AndroidManifest.xml中的manifest节点中加入android:sharedUerId="android.uid.system"这个属性。然后放在源码环境中编译,并通过adb install 的方式进行安装。mk文件中的属性改为LOCAL_CERTIFICATE :=platform。

热点内容
点击猫脚本 发布:2025-06-15 00:16:44 浏览:925
terminalpython 发布:2025-06-15 00:05:31 浏览:6
apk反编译如何查看主网站 发布:2025-06-14 23:49:17 浏览:855
cmd中怎样编译 发布:2025-06-14 23:37:40 浏览:555
为什么安卓容易误下软件 发布:2025-06-14 23:27:57 浏览:554
围棋源码 发布:2025-06-14 23:23:25 浏览:111
三星手机用什么存储卡 发布:2025-06-14 23:22:32 浏览:44
批量ftp上传 发布:2025-06-14 23:14:13 浏览:431
固态硬盘存储时间 发布:2025-06-14 22:53:43 浏览:4
脚本设计示例 发布:2025-06-14 22:40:05 浏览:314