直播电商软件开发,圆形旋转动画
直播电商软件开发,圆形旋转动画的相关代码
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.drawable.BitmapDrawable;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
import android.view.animation.LinearInterpolator;/*** Created AY 2018-11-26 设置圆形ImageView以及旋转动画*/
public class CircleImageView extends AppCompatImageView {private ObjectAnimator objectAnimator;public static final int STATE_PLAYING = 1;//正在播放public static final int STATE_PAUSE = 2;//暂停public static final int STATE_STOP = 3;//停止public int state;private float width;private float height;private float radius;private Paint paint;private Matrix matrix;public CircleImageView(Context context) {this(context, null);}public CircleImageView(Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);paint = new Paint();paint.setAntiAlias(true); //设置抗锯齿matrix = new Matrix(); //初始化缩放矩阵init();}private void init() {state = STATE_STOP;objectAnimator = ObjectAnimator.ofFloat(this, "rotation", 0f, 359f);//添加旋转动画,旋转中心默认为控件中点objectAnimator.setDuration(36000);//设置动画时间objectAnimator.setInterpolator(new LinearInterpolator());//动画时间线性渐变objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);objectAnimator.setRepeatMode(ObjectAnimator.RESTART);}public void playAnim() {if (state == STATE_STOP) {objectAnimator.start();//动画开始state = STATE_PLAYING;} else if (state == STATE_PAUSE) {objectAnimator.resume();//动画重新开始state = STATE_PLAYING;}}public void pauseAnim(){if(state == STATE_PLAYING){objectAnimator.pause();//动画暂停state = STATE_PAUSE;}}public void stopAnim() {objectAnimator.end();//动画结束state = STATE_STOP;}/*** 测量控件的宽高,并获取其内切圆的半径*/@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);width = getMeasuredWidth();height = getMeasuredHeight();radius = Math.min(width, height) / 2;}@Overrideprotected void onDraw(Canvas canvas) {paint.setShader(initBitmapShader());//将着色器设置给画笔canvas.drawCircle(width / 2, height / 2, radius, paint);//使用画笔在画布上画圆}/*** 获取ImageView中资源图片的Bitmap,利用Bitmap初始化图片着色器,通过缩放矩阵将原资源图片缩放到铺满整个绘制区域,避免边界填充*/private BitmapShader initBitmapShader() {Bitmap bitmap = ((BitmapDrawable) getDrawable()).getBitmap();BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);float scale = Math.max(width / bitmap.getWidth(), height / bitmap.getHeight());matrix.setScale(scale, scale);//将图片宽高等比例缩放,避免拉伸bitmapShader.setLocalMatrix(matrix);return bitmapShader;}}
以上就是直播电商软件开发,圆形旋转动画的相关代码, 更多内容欢迎关注之后的文章
直播电商软件开发,圆形旋转动画相关推荐
- 直播电商软件开发,实现窗体抖动
直播电商软件开发,实现窗体抖动相关的代码 public class Shake {/// <summary>/// 震动方法/// </summary>/// <para ...
- 直播电商软件开发,简单的单例模式
直播电商软件开发,简单的单例模式相关的代码 public class Instance {private static Instance instance;private Instance() {}p ...
- 直播电商软件开发,js 倒计时编写
直播电商软件开发,js 倒计时编写相关的代码 countDownCtrl() {let that = thislet startTime = new Date().getTime()let endTi ...
- 直播电商软件开发,控制是否允许ViewPager左右滑动
直播电商软件开发,控制是否允许ViewPager左右滑动实现的相关代码 import android.content.Context; import android.support.v4.view.V ...
- 直播电商软件开发,下拉刷新
直播电商软件开发,下拉刷新实现的相关代码 使用页面生命周期 onPullDownRefresh,当处理完数据刷新后,uni.stopPullDownRefresh 可以停止当前页面的下拉刷新 onPu ...
- 直播电商软件开发,Android CardView实现圆角效果
直播电商软件开发,Android CardView实现圆角效果实现相关代码 使用cardCornerRadius就可以直接实现圆角效果,代码如下 <androidx.cardview.widge ...
- 直播电商软件开发,border-image 边框图片
直播电商软件开发,border-image 边框图片实现的相关代码 <!DOCTYPE html> <html lang="en"> <head> ...
- 直播电商软件开发,图片相册选择与拍照
直播电商软件开发,图片相册选择与拍照实现的相关代码 /*** 照相或者选择图片* 引用ImageSelector框架,* 1.需要在Project的build.gradle在添加以下代码:* allp ...
- 电商软件开发公司排名
电商软件开发公司排名 1 北京华盛恒辉软件开发公司 2 北京五木恒润科技有限公司 3 北京平步科技有限公司 4 航天信息股份有限公司 5 北电网络nortel 6 北京朗新 7 北京科思诚科技有限公司 ...
最新文章
- 报名 | 中小微企业如何转型升级?腾讯CSIG沙龙直播分享数字化发展新思路
- C++ vector 容器浅析
- oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)
- Oracle/PLSQL Case Statement
- 顺丰控股:2月速运物流业务营业收入98.49亿元,同比下降3.36%
- php mysql上机题_PHP+mysql真题
- 《普林斯顿微积分读本》个人读书笔记
- matlab求一维热传导方程数值解代码,一维热传导方程的数值解
- 7-3 前序序列创建二叉树 (25 分) PTA
- 【经验总结—1】:研究僧常用文献搜索网站和下载方法
- php zend guard php 7,zend guard php7最新版
- 苹果itunes下载_苹果正在杀死iTunes,但不是在Windows上
- vscode 插件-常用插件
- GBASE 8a MPP EXplain extended
- Oracle中的TIMESTAMP类型解读(TIMESTAMP存储格式)
- ST7701芯片820*320屏幕移植stemwin
- linux看视频插件,Linux系统下安装Adobe Flash Player插件观播放视频
- Google Adsense优化SEO选词技巧
- Linux下的动态库和静态库
- 2018年中国500强排行榜