Android仿网易云音乐播放界面

  

现在很多的播放器的播放界面都是采用光盘的转动,下面是我仿造网易的播放界面,先上两张图:
  

  

 Android仿网易云音乐播放界面

  

第一张为播放前的界面,第二张为点击播放按钮的图片。布局文件如下:
  

        & lt; RelativeLayout xmlns: android=" http://schemas.android.com/apk/res/android "   android: layout_width=" match_parent "   android: layout_height=" match_parent "   android:背景=" # ffffff "比;      LinearLayout & lt;   android: layout_width=" match_parent "   android: layout_height=" match_parent "   面向android:=按怪薄北?      & lt;使用   android: layout_width="宽和"   android: layout_height=" 48 dp "   android:背景=" # 222222 "比;      & lt; ImageView   android: id=癅 + id/back_main_activity”   android: layout_width=" 40 dp "   android: layout_height=" 40 dp "   android: layout_centerVertical=" true "   android: layout_marginLeft=" 5 dp "   android:背景=癅drawable/back_main_view”/比;      & lt; TextView   android: id=癅 + id/play_music_name”   android: layout_width=" wrap_content "   android: layout_height=" 40 dp "   android: layout_centerInParent=" true "   android: layout_marginLeft=" 10 dp”   android: layout_toRightOf=癅 + id/back_main_activity”   android: paddingTop=" 5 dp "   android:文本="音乐"   android:输入textColor=" # ffffff "   android: textSize=" 20 dp/比;   & lt;/RelativeLayout>      & lt;使用   android: id=癅 + id/play_disc”   android: layout_width="宽和"   android: layout_height=" wrap_content "   android:重力="中心| center_vertical”比;   & lt;/RelativeLayout>   & lt;/LinearLayout>      LinearLayout & lt;   android: layout_width="宽和"   android: layout_height=" 80 dp”   android: layout_below=癅 + id/seekbarLayout”   android:背景=" # 222222 "   android:重力=" center_horizontal "   面向android:="水平"   android: layout_alignParentBottom=" true "比;      & lt; ImageView   android: id=癅 + id/music_paly_pause”   android: layout_width=" 80 dp”   android: layout_height="宽和"   android:背景=癅drawable/play_btn_play”/比;   & lt;/LinearLayout>      & lt;/RelativeLayout>      之前      

MainActivity的代码如下:
  

        公开课MainActivity延伸活动{   私人RelativeLayout playDisc;   私人MusicPlayDiscView MusicPlayDiscView;//播放按钮   私人ImageView playMusic;      @Override   保护空白>   公开课MusicPlayDiscView扩展视图{      油漆涂料;      私人处理程序处理程序;//光盘图片   位图bitmapDisc=BitmapFactory.decodeResource (getresource (),   R.drawable.play_disc);//专辑图片   位图bitmapImage=BitmapFactory.decodeResource (getresource (),   R.drawable.music_play_people);   位图bitmapCircularAblum bitmapDiscCircular;//光盘指针图片   位图bitmapNeedle=BitmapFactory.decodeResource (getresource (),   R.drawable.play_needle);      公共MusicPlayDiscView(上下文语境){   超级(上下文);//分别获得光盘和专辑的圆形图片   bitmapCircularAblum=getCircularBitmap (bitmapImage, 400);   bitmapDiscCircular=getCircularBitmap (bitmapDisc,   bitmapDisc.getWidth ());      涂=new ();   处理程序=new处理程序();   handler.post(可运行);   }/* *   *利用线程不断更新界面   */私人Runnable Runnable=new Runnable () {   公共空间run () {   postInvalidate ();   处理程序。postDelayed (runnable, 50);   }   };//状态标志:   int之前=0;//角度标志   私人int degreeFlag=0;      @Override   保护无效onDraw(帆布画布){   super.onDraw(画布);/* *   *先画光盘与专辑图片   */如果(常数。现状后==Constant.Play) {   Constant.Degree + +;   如果(常数。度比;360)   常数。度=0;      degreeFlag=Constant.Degree;      canvas.save ();//360为屏幕的中间位置,手机是720的宽度   canvas.rotate(常数。学位,360年,   170 + bitmapDiscCircular.getHeight ()/2);   canvas.drawBitmap (bitmapCircularAblum   360 - bitmapCircularAblum.getWidth()/2, 200年,油漆);      canvas.drawBitmap (bitmapDisc   360 - bitmapDiscCircular.getWidth()/2, 170年,油漆);      canvas.restore ();      其他}{//前=0;      canvas.save ();   画布。旋转(degreeFlag, 360,   170 + bitmapDiscCircular.getHeight ()/2);   canvas.drawBitmap (bitmapCircularAblum   360 - bitmapCircularAblum.getWidth()/2, 200年,油漆);      canvas.drawBitmap (bitmapDisc   360 - bitmapDiscCircular.getWidth()/2, 170年,油漆);   canvas.restore ();      }/* *   *再画光盘指针图片,三张图不能同时画   */如果(常数。现状后==常数。玩){   画布。drawBitmap (360 - bitmapNeedle.getWidth bitmapNeedle ()/2,   0、油漆);      其他}{   canvas.save ();   矩阵矩阵=new矩阵();   matrix.postRotate (-45);   paint.setAntiAlias(真正的);//获得指针旋转后的图片   位图bm=位图。createBitmap (bitmapNeedle 0 0,   bitmapNeedle.getHeight bitmapNeedle.getWidth(),(),矩阵,   真正的);   画布。drawBitmap (bm, 360 - bitmapNeedle.getWidth()/2 + 5, -60年,   油漆);         canvas.restore ();   }      }/* *   *获得圆形图片的方法   *   */私人位图getCircularBitmap(位图的位图,int半径){   位图sbmp=位图。createScaledBitmap(位图,半径,半径,假);      位图输出=Bitmap.createBitmap (sbmp.getWidth (), sbmp.getHeight (),   Config.ARGB_8888);   帆布画布=新画布(输出);      涂漆=new ();   矩形矩形=new矩形(0,0,sbmp.getWidth (), sbmp.getHeight ());      paint.setAntiAlias(真正的);   paint.setFilterBitmap(真正的);   paint.setDither(真正的);   画布。drawARGB (0, 0, 0, 0);   paint.setColor (Color.BLACK);   canvas.drawCircle (sbmp.getWidth ()/2, sbmp.getHeight ()/2,   sbmp.getWidth()/2、油漆);   油漆。setXfermode(新PorterDuffXfermode (Mode.SRC_IN));   画布。drawBitmap (sbmp,矩形,矩形,油漆);   返回输出;   }      }   null   null   null   null

Android仿网易云音乐播放界面