直播电商软件开发,圆形旋转动画的相关代码

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;}}

以上就是直播电商软件开发,圆形旋转动画的相关代码, 更多内容欢迎关注之后的文章

直播电商软件开发,圆形旋转动画相关推荐

  1. 直播电商软件开发,实现窗体抖动

    直播电商软件开发,实现窗体抖动相关的代码 public class Shake {/// <summary>/// 震动方法/// </summary>/// <para ...

  2. 直播电商软件开发,简单的单例模式

    直播电商软件开发,简单的单例模式相关的代码 public class Instance {private static Instance instance;private Instance() {}p ...

  3. 直播电商软件开发,js 倒计时编写

    直播电商软件开发,js 倒计时编写相关的代码 countDownCtrl() {let that = thislet startTime = new Date().getTime()let endTi ...

  4. 直播电商软件开发,控制是否允许ViewPager左右滑动

    直播电商软件开发,控制是否允许ViewPager左右滑动实现的相关代码 import android.content.Context; import android.support.v4.view.V ...

  5. 直播电商软件开发,下拉刷新

    直播电商软件开发,下拉刷新实现的相关代码 使用页面生命周期 onPullDownRefresh,当处理完数据刷新后,uni.stopPullDownRefresh 可以停止当前页面的下拉刷新 onPu ...

  6. 直播电商软件开发,Android CardView实现圆角效果

    直播电商软件开发,Android CardView实现圆角效果实现相关代码 使用cardCornerRadius就可以直接实现圆角效果,代码如下 <androidx.cardview.widge ...

  7. 直播电商软件开发,border-image 边框图片

    直播电商软件开发,border-image 边框图片实现的相关代码 <!DOCTYPE html> <html lang="en"> <head> ...

  8. 直播电商软件开发,图片相册选择与拍照

    直播电商软件开发,图片相册选择与拍照实现的相关代码 /*** 照相或者选择图片* 引用ImageSelector框架,* 1.需要在Project的build.gradle在添加以下代码:* allp ...

  9. 电商软件开发公司排名

    电商软件开发公司排名 1 北京华盛恒辉软件开发公司 2 北京五木恒润科技有限公司 3 北京平步科技有限公司 4 航天信息股份有限公司 5 北电网络nortel 6 北京朗新 7 北京科思诚科技有限公司 ...

最新文章

  1. 报名 | 中小微企业如何转型升级?腾讯CSIG沙龙直播分享数字化发展新思路
  2. C++ vector 容器浅析
  3. oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)
  4. Oracle/PLSQL Case Statement
  5. 顺丰控股:2月速运物流业务营业收入98.49亿元,同比下降3.36%
  6. php mysql上机题_PHP+mysql真题
  7. 《普林斯顿微积分读本》个人读书笔记
  8. matlab求一维热传导方程数值解代码,一维热传导方程的数值解
  9. 7-3 前序序列创建二叉树 (25 分) PTA
  10. 【经验总结—1】:研究僧常用文献搜索网站和下载方法
  11. php zend guard php 7,zend guard php7最新版
  12. 苹果itunes下载_苹果正在杀死iTunes,但不是在Windows上
  13. vscode 插件-常用插件
  14. GBASE 8a MPP EXplain extended
  15. Oracle中的TIMESTAMP类型解读(TIMESTAMP存储格式)
  16. ST7701芯片820*320屏幕移植stemwin
  17. linux看视频插件,Linux系统下安装Adobe Flash Player插件观播放视频
  18. Google Adsense优化SEO选词技巧
  19. Linux下的动态库和静态库
  20. 2018年中国500强排行榜

热门文章

  1. 三星s5为什么显示无服务器,三星S5怎么连接电脑 无法连接电脑解决办法
  2. ANSA许可 许可分析、分析许可
  3. python完成“疯狂填词”程序。
  4. 电话通讯录用到的 Rui
  5. QT+opengl实现3D点云和三维坐标系
  6. Matlab triang()函数
  7. overleaf 插入图片_LaTeX入坑小记
  8. 知乎好物推荐怎么做?普通人在家单日收入500的副业
  9. 使用新的Amazon Application Migration Service进行直接迁移
  10. EasyGBS设置录像计划时间未生效的原因以及解决方法