Android自定义观点旋转圆形图片

  

一个自定义看,记录一下思路和代码以备以后使用。
  

  

思路:   

1。首先要画一个圆形图片和一个圆形背景图(通过自定义视图);
  2 .自定义视图基本步骤初始化属性,测量宽高和中心点,然后绘制图片;
  3 .通过处理程序实现图片的角度旋转。然后然后就慢慢撸。
  

  

效果图:

  

 Android自定义观点旋转圆形图片”>,<br/>
  </p>
  <p> 1,废话不多直接上代码</p>
  
  <pre类=   公开课MusicPlayerView扩展视图{   私有静态最终长ROTATE_DELAY=5;//旋转动作时间   私人int mRotateDegrees;//旋转的角度   私人处理器mRotate;   私人int mWidth;   私人int mHeight;   私人mCenterX浮动;   私人mCenterY浮动;   私人RectF RectF;   私人位图mBitmapCover;   私人mCoverScale浮动;   私人BitmapShader mShader;   私人油漆涂料;   私人布尔isRotating;   私人最终Runnable mRunnableRotate=new Runnable () {   @Override   公共空间run () {   如果(isRotating) {   updateCoverRotate ();   mRotate。postDelayed (mRunnableRotate ROTATE_DELAY);   }   }   };/* *   *更新封面角度,重新绘制图片   */私人空间updateCoverRotate () {   mRotateDegrees +=1;   mRotateDegrees=mRotateDegrees % 360;   postInvalidate ();   }/* *   *判读是否在旋转   * @return   */公共布尔isRotating () {   返回isRotating;   }/* *   *开始旋转图片   */公共空间开始(){   isRotating=true;   mRotate.removeCallbacksAndMessages(空);   mRotate.postDelayed (mRunnableRotate ROTATE_DELAY);   postInvalidate ();   }/* *   *停止图片旋转   */公共空间停止(){   isRotating=false;   postInvalidate ();   }/* *   *通过本地图片设置封面图   */公共空间setCoverDrawable (int coverDrawable) {   可拉的可拉的=getContext () .getResources () .getDrawable (coverDrawable);   mBitmapCover=drawableToBitmap(可拉的);   createShader ();   postInvalidate ();   }/* *   *网络图片加载使用毕加索图片加载工具   *   * @param imageUrl   */公共空间setCoverURL(字符串imageUrl) {   Picasso.with (getContext ()) .load (imageUrl) .into(目标);   }      公共MusicPlayerView(上下文语境){   超级(上下文);   init(上下文,null);   }      公共MusicPlayerView(上下文语境,AttributeSet attrs) {   超级(上下文,attrs);   init(上下文,attrs);   }      公共MusicPlayerView(上下文语境、AttributeSet attrs int defStyleAttr) {   超级(上下文、attrs defStyleAttr);   init(上下文,attrs);   }/* *   *初始化视图资源   *   * @param上下文   * @param attrs   */私人空间init(上下文语境,AttributeSet attrs) {   setWillNotDraw(假);   TypedArray=上下文。obtainStyledAttributes (attrs R.styleable.play_view);   可拉的mDrawableCover=a.getDrawable (R.styleable.play_view_cover);   如果(mDrawableCover !=null) {   mBitmapCover=drawableToBitmap (mDrawableCover);   }   a.recycle ();   mRotateDegrees=0;//通过处理程序更新图片角度   mRotate=new处理程序();   rectF=new rectF ();   }/* *   *测量宽高,设置中心点中心点位置,创建阴影   *   * @param widthMeasureSpec   * @param heightMeasureSpec   */@Override   保护空白>   & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; resources>   & lt; declare-styleable name=" play_view比;   & lt; attr name==罢?胺饷妗备袷奖?   & lt;/declare-styleable>   & lt;/resources>   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Android自定义观点旋转圆形图片