Bitmap是Android对图像的定义描述,而Drawable则是对图像的展现描述,在View视图中显示图像都是通过Drawable来实现的。其中有关Bitmap的介绍参见《Android开发笔记(九十四)图片的基本加工》,有关Drawable的介绍参见《Android开发笔记(七)初识Drawable》。虽然ImageView提供了setImageBitmap方法,但查看该方法的源码,会发现内部还是调用setImageDrawable方法,同时利用BitmapDrawable完成Bitmap与Drawable的转换。
Drawable在我们平时的开发中,基本都会用到,而且给大家非常的有用。那么什么是Drawable呢?能够在canvas上绘制的一个玩意,而且相比于View,并不需要去考虑measure、layout,仅仅只要去考虑如何draw(canavs)。当然了,对于Drawable传统的用法,大家肯定不陌生 ,今天主要给大家带来以下几个Drawable的用法:
效果图: 【注意】Demo已更新到最新版本,并稍作调整。(2019-07-05) 之前出过一篇 Android 选择图片、上传图片之ImagePicker,这个是okgo作者出的,就一般需求来讲是够了,但是没有压缩,需要自己去搞。 后来业务需求提升,页面要美,体验要好,便不是那么满足需求了,所幸在github上找到PictureSelector(然后当时没多久Matisse就开源了…可以看这里Android 选择图片、上传图片之Matisse),也不用自己再撸一个了,下面来介绍介绍Pic
<item name="windowBackground">@drawable/screen\_background\_selector\_light</item>
很多 过度绘制是难以避免的,如 上述实例的 文字 & 背景导致的过度绘制;只能尽可能避免过度绘制:
最近一直在研究自定义view,正好项目中有一个根据下载进度来实现球体进度的需求,所以自己写了个进度球,代码非常简单。先看下效果:
步骤1:创建一个画笔对象 步骤2:画笔设置,即设置绘制内容的具体效果(如颜色、大小等等) 步骤3:初始化画笔(尽量选择在View的构造函数)
《Android开发艺术探索》读书笔记 (6) 第6章 Android的Drawable
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47304471
今天给大家推荐的一个开源库是大家可能会经常遇到的,可能以后会常常用到的一个开源库。
Android平台中要实现二维码扫描功能的话,最常用的开源库要推zxing和zbar了。不过zbar已经好几年没有更新了,而zxing由Google开源并持续维护,所以本文就选择采用zxing来实现二维码扫描功能。
Material Design 是 Google 在 2014 年 I/O 大会上发布的一种新的设计规范。这种设计风格给 Android UI 设计带来了很多的变化。让页面变得美感十足。
参考资料: https://www.jianshu.com/p/1d84ba23f4d2 https://mp.weixin.qq.com/s/lh3dgJK95cgbG-bUZfvbFA
1.这整体是一个ListView,所以需要自定义一个ListView. 2.处理头部布局文件,将其以HeaderView的方式添加到自定义的ListView中 3.需要获取HeaderView的ImageView的初始高度和ImageView中图片的高度.因为这2个高度将决定下来的时候图片拉出的范围,以及松手后图片回弹的动画效果.对应控件宽高的获取,有兴趣的可以看这篇文章浅谈自定义View的宽高获取 4.在overScrollBy方法内通过修改ImageView的LayoutParams的height值来显示更多的图片内容. 5.在onTouchEvent方法内处理ACTION_UP事件,使ImageView有回弹的动画效果,这里介绍2种方式,分别是属性动画和自定义动画.
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪圆形的bitmap,然后在onDraw()进行绘制圆形图片输出。
在自定义视图中,有三个函数可以重写用于界面绘制,在视图创建过程中,三个函数的执行顺序依次是:onLayout、onDraw、dispatchDraw。 1、onLayout(boolean changed, int left, int top, int right, int bottom) : onLayout用于定位该视图在上级视图中的位置,从其参数中就可以看出来。由于该函数没有画布,因此只适合绘制现成的视图控件。 2、onDraw(Canvas canvas) : 自定义控件一般是重写onDraw方法,在画布中绘制各种图形。 3、dispatchDraw(Canvas canvas) : dispatchDraw与onDraw的区别在于:onDraw在绘制下级视图之前,而dispatchDraw在绘制下级视图之后,所以如果不想自己的绘图被下级视图覆盖的话,就要在dispatchDraw中进行绘制操作。为方便记忆,只要是从ViewGroup衍生出的视图,都用dispatchDraw,其他小控件都用onDraw。
前言 android 6+权限使用的时候需要动态申请,那么在使用rn的时候要怎么处理拍照权限问题呢?本文提供的是一揽子rn操作相册、拍照的解决方案,请看正文的提高班部分。 解决步骤 1、AndroidManifest.xml设置拍照权限: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EX
一般公司都有更换用户头像功能,需要从图库中选择图片或者拍照,基本还会对图片进行裁剪。最近抽空就做了一些简单的封装,方便以后使用。主要是用了建造者模式,链式调用,方便简单。可以自定义图片路径,附带裁剪和简单压缩功能。使用实例如下:
过度绘制(Overdraw)描述的是屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次重叠的 UI 结构里面,如果不可见的 UI 也在做绘制的操作,会导致某些像素区域被绘制了多次,同时也会浪费大量的 CPU 以及 GPU 资源。 在 Android 手机的开发者选项中,有一个『调试 GPU 过度绘制』的选项,该选项开启之后,手机显示如下,显示出来的蓝色、绿色的色块就是过度绘制信息。
android 6+权限使用的时候需要动态申请,那么在使用rn的时候要怎么处理拍照权限问题呢?本文提供的是一揽子rn操作相册、拍照的解决方案,请看正文的提高班部分。
Material Components是Google官方对Material Deign的最佳实践,这个库试图在不同的Android版本中统一Material Design UI组件的外观和使用代码,当然也在不同的平台上统一这些组件(有针对iOS、web和Flutter的库的版本)。Material Components库还实现了新的Material Design规范中引入的功能。
android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪对应的圆角矩形的bitmap,然后在onDraw()进行绘制圆角矩形图片输出。
ZXingLite for Android 是ZXing的精简极速版,基于ZXing库优化扫码和生成二维码/条形码功能,扫码界面完全支持自定义,也可一行代码使用默认实现的扫码功能。总之你想要的都在这里。
我们之前设置拍照保存的文件地址的Uri,都是直接Intent.putExtra(MediaStore.EXTRA_OUTPUT,文件保存的Uri路径),但是7.0之后,对用户权限提高了保护,之前那种方式行不通了,所以我们要做7.0的判断,用FileProvider获取设置保存的文件Uri,然后放到Intent.putExtra(MediaStore.EXTRA_OUTPUT,文件保存的Uri路径)中,代码如下:
我们在drawable目录下可以创建很多自定义的资源,其中用的最多的应该就是selector和shape。目前在Android中有21种drawable标签,了解和利用这些标签对我们的开发有很大的帮助。这个文章我们对这21种标签做一个介绍,让大家有一个印象。
短视频SDK、直播SDK接入,超低占用空间,十秒大型场景仅100KB+ 精准人脸识别,动态捕捉最优人脸画面 无限炫酷特效,支持Android、IOS系统。
简介 Matrix 是微信终端自研和正在使用的一套 APM(应用性能管理)系统。 Matrix-ApkChecker 作为 Matrix 系统的一部分,是针对 android 安装包的分析检测工具,根据一系列设定好的规则检测 apk 是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。 功能 Matrix-ApkChecker 当前主要包含以下功能 1. 读取 manifest 的信息 从 AndroidManifest.xml 文件中读取 apk 的全局信息,如 packag
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, Android!" android:textSize="18sp" android:textColor="#000000" android:gravity="center"/>
以前的Activity之间跳转比较生硬,用户很明显的会感觉到跳转,MaterialDesign推出了新的转场动画,可以实现两个界面之间的共享元素,使跳转带来的体验感如德芙般丝滑
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/53411790
零、前言: 本文的知识点一览 1.自定义控件及自定义属性的写法,你也将对onMesure有更深的认识 2.关于bitmap的简单处理,及canvas区域裁剪 3.本文会实现两个自定义控件:Fi
书接前文,我们讲了在MD Component中的MaterialShapeDrawable,今天则继续讲解在此基础上,MDC封装的一个Image组件——ShapeableImageView。它的作用就是让开发者方便的对Imageview加载的图像进行Shape的处理。
今天我的这篇文章使用的是LruCache这个类(之前写了一篇使用LruCache加载网络图片的Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅)以及对图片进行相对应的裁剪,这样也可以尽量的避免OOM的发生,我们先看下微信的效果吧
零、前言 [1].ImageView地位:直接继承自View,安卓源码1600+,算是个小类,但图片显示基本上都用它 [2].scaleType有点小烦,不过看图还是挺清晰的 [3].cropToPadding、adjustViewBounds、tint [4].图片设置 源码中ImageView的自定义属性: * @attr ref android.R.styleable#ImageView_adjustViewBounds * @attr ref android.R.styleable#
快速开始:https://cloud.tencent.com/document/product/584/9457
RippleDrawable是Android在5.0之后新增的图形类,它的作用是在点击时展示水波动画,从而提示用户在这里按压了屏幕。这个提示效果类似于状态图形StateListDrawable,区别在于,StateListDrawable使用一张静止图片表示按下状态,而RippleDrawable使用荡起涟漪的水波动画表示按压动作。 水波图形的用法很简单,先在xml文件中定义水波图形的规格,然后把视图的android:background属性设置为该图形,然后点击视图就会产生动画效果了。具体的水波样式主要有三种,说明如下: 1、没有边界限制的水波,这意味着允许水波动画充满整个视图,xml定义如下:
最近网易云音乐出了一个叫鲸云音效东西,效果怎么样不是很清楚,但是播放界面还带了动效,这个就比较炫酷了,感觉比较有意思,所以也想自己做一个,其中一个我觉得比较好看的效果如下(动图的来源也比较有意思,后面会讲)
本文实例讲述了Android开发使用自定义View将圆角矩形绘制在Canvas上的方法。分享给大家供大家参考,具体如下:
步骤1:创建一个画笔对象 步骤2:画笔设置,即设置绘制内容的具体效果(如颜色、大小等等) 步骤3:初始化画笔(尽量选择在View的构造函数) 具体使用如下:
2.自定义RoundCornerImageView,继承AppCompatImageView
走往android的进阶之路,避不开自定义View的学习和绘制。这里以绘制一个可用的图片相框为例。开始系统的学习View的绘制。 麻雀虽小却五脏俱全,不仅要求对绘制居中的处理,还有文字、图片得宽高的处理。涉及知识内容可以说非常实用。 图片介绍框需求:
代码基于开源项目修改,github上项目链接:https://github.com/shengge/android-crop(本地下载)
本文实例讲述了Android编程图片操作类定义与用法。分享给大家供大家参考,具体如下:
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
图片裁剪是对图片进行区域选定,然后裁剪选定的区域,形成一个图片,然后再对这个图片进行压缩,最终返回结果图片。
昨天我们学习了自定义带图片和文字的ImageTextButton,非常简单,我承诺给大家要讲一下用自定义属性的方式学习真正的实现自定义控件,在布局文件中使用属性的方式就需要用到attr.xml这个文件
领取专属 10元无门槛券
手把手带您无忧上云