本文实例为大家分享了Android雷达扫描效果的具体代码,供大家参考,具体内容如下
效果图
知识点提要
- Shader
- 矩阵matrix
- 属性动画
ShaderView3
package com.example.apple.shaderdemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.graphics.SweepGradient;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;public class ShaderView3 extends View { private Paint mSweepPaint; private Paint mBitmapPaint; private int mWidth; private Bitmap mBitmap; private int degrees = 0; Matrix mSweepMatrix = new Matrix(); Matrix mBitmapMatrix = new Matrix(); private SweepGradient mSweepGradient; private BitmapShader mBitmapShader; private float mScale; public ShaderView3(Context context) { super(context); init(); } public ShaderView3(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } public void setDegrees(int degrees) { this.degrees = degrees; postInvalidate();//在主线程里执行OnDraw } private void init() {// 1.准备好画笔 mSweepPaint = new Paint(); mBitmapPaint = new Paint();// 2.图片着色器 mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ccc); mBitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);// 3.将图片着色器设置给画笔 mBitmapPaint.setShader(mBitmapShader); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec);// 获取这个自定义view的宽高,注意在onMeasure里获取,在构造函数里得到的是0 mWidth = getMeasuredWidth();// 根据你所设置的view的尺寸和bitmap的尺寸计算一个缩放比例,否则的话,得到的图片是一个局部,而不是一整张图片 mScale = (float) mWidth / (float) mBitmap.getWidth();// 4.梯度扫描着色器 mSweepGradient = new SweepGradient(mWidth / 2, mWidth / 2, new int[]{Color.argb(200, 200, 0, 0), Color.argb(10, 30, 0, 0)}, null);// 5.将梯度扫描着色器设置给另外一支画笔 mSweepPaint.setShader(mSweepGradient); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas);// 迫不得已的时候,才在onDraw方法写代码,能提前准备的要在之前去准备,// 不要写在onDraw里面,因为onDraw会不停地刷新绘制,写的代码越多,越影响效率// 将图片缩放至你指定的自定义View的宽高 mBitmapMatrix.setScale(mScale, mScale); mBitmapShader.setLocalMatrix(mBitmapMatrix);// 设置扫描圈旋转角度 mSweepMatrix.setRotate(degrees, mWidth / 2, mWidth / 2); mSweepGradient.setLocalMatrix(mSweepMatrix);// 5. 使用设置好图片着色器的画笔,画圆,先画出下层的女神图片,在画出上层的扫描图片 canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2, mBitmapPaint); canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2, mSweepPaint); }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android Shader应用开发之雷达扫描效果
后端开发2023-05-30
Android动画之雷达扫描效果
后端开发2022-06-06
利用Qt绘制雷达扫描效果
后端开发2023-05-14
Android编程简单实现雷达扫描效果
后端开发2022-06-06
怎么用Qt绘制雷达扫描效果
后端开发2023-07-05
Android仿微信、QQ附近好友雷达扫描效果
后端开发2022-06-06
Android仿微信雷达扫描效果的实现方法
后端开发2023-05-31
Android开发中实现应用的前后台切换效果
后端开发2022-06-06
Android应用开发之简易、大气音乐播放器实现专辑倒影效果
后端开发2022-06-06
Android开发之使用ViewPager实现图片左右滑动切换效果
后端开发2022-06-06
Android应用开发中模拟按下HOME键的效果(实现代码)
后端开发2022-06-06
咦!没有更多了?去看看其它编程学习网 内容吧