自定义View的简单案例(4)实现小风车旋转的效果
来源:互联网 发布:淘宝海外直购能退货吗 编辑:程序博客网 时间:2024/06/10 05:33
此案例通过自定义view设置一张风车的图片实现不停旋转的功能。可以先看下面的效果在看具体的实现
和前面一样首先自定义一个类继承View 实现两个构造方法,之后在两个构造方法中都初始化画笔在此案例中用到的canvas的方法先给大家解释一下:
canvas.save()保存状态,
canvas.rotate()旋转
canvas.restore();删除画布属性
invalidate();刷新画布
这四个方法在此案例中起到的比较重要的作用 首先们初始化画笔,然后在ondraw方法中保存状态然后对canvas进行操作,先将图片画到画布上然后通过画布的旋转进行旋转,通过定义degress来改变旋转的角度,通过restore方法保存状态和invalidate不断的进行刷新来实现风车旋转的效果
下面就是实现代码:
package demo.liuchen.com.android27_customview.rotate; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.os.Build; import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.view.View; import demo.liuchen.com.android27_customview.R; /** * Created by ${LC} on 2016/11/22. */ public class MyRotateView extends View{ private Paint paint; private int degree= 0; public MyRotateView(Context context) { super(context); initPaint(); } public MyRotateView(Context context, AttributeSet attrs) { super(context, attrs); initPaint(); } public void initPaint(){ paint = new Paint(); paint.setAntiAlias(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); //画布先进行保存然后restore需要配套使用 save可以保存各状态 restore:删除画布属性 canvas.save(); degree++; int width = getWidth(); int height = getHeight(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.fengches); /** * 对画布进行旋转 * @param degress:旋转的角度,类型为float * @param coorx: x的偏移量 * @param coory: y的偏移量 * */ // canvas.rotate(degree,150,150);//这个点为旋转中心 canvas.rotate(degree,width/3,height/3); /** * 画布画一个正方形 */ canvas.drawBitmap(bitmap, width/3-bitmap.getWidth()/2 , height/3-bitmap.getHeight()/2 ,paint); // canvas.drawRect(100,100,200,200,paint); canvas.restore(); //刷新 invalidate(); } }
0 0
- 自定义View的简单案例(4)实现小风车旋转的效果
- Android自定义view--SurfaceView实现墨迹天气的风车效果
- Java实现风车旋转的效果
- Android 仿微信刷新旋转小风车 自定义view
- 自定义View的简单案例(3) 记事本的实现
- 利用Android自定义View实现转盘旋转的效果
- Android自定义View实现转盘旋转的效果
- 自定义View的简单案例(1)
- 自定义View的简单案例(2)
- vc++程序-旋转的风车
- Android下 一个自定义VIEW实现简单的弹幕效果
- 自定义View之——风车的绘制
- android 旋转风车效果
- jquery实现的全屏带左右切换按钮和类似风车四叶子旋转切换效果的全屏广告源
- 自定义View实现转盘旋转效果
- Android自定义View——从零开始实现可暂停的旋转动画效果
- 自定义view 开关的实现案例
- Flex中旋转效果的实现(小技巧)
- 第16章 Channel 和Unsafe
- Java集合类
- mysql事务隔离级别
- HTML取消点击事件等一些开发技巧
- 动态数组的实现
- 自定义View的简单案例(4)实现小风车旋转的效果
- C++中二维Vector初始化的一种方式
- python基础复习之数字和字符串
- wget命令
- Android 隐藏标题栏
- c语言的自动类型转换
- 2016总结
- SpringMVC数据绑定
- pycharm设置断点