一个自定义看,记录一下思路和代码以备以后使用。
思路:
1。首先要画一个圆形图片和一个圆形背景图(通过自定义视图);
2 .自定义视图基本步骤初始化属性,测量宽高和中心点,然后绘制图片;
3 .通过处理程序实现图片的角度旋转。然后然后就慢慢撸。
效果图:
公开课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> >之前
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。