网站开发前台和后台wordpress必用插件
web/
2025/10/7 4:27:40/
文章来源:
网站开发前台和后台,wordpress必用插件,做网站的服务器多少钱,流量网站怎么做的上一篇对自定义View及一些方法有所了解#xff0c;下面做一个简单的叶子飘动的例子主要技术点1、添加背景图片canvas.drawBitmap()2、Matrix动画类3、Matrix添加到画布上步骤1、添加黄色背景颜色public LeafView(Context context, AttributeSet attrs) {super(context, attrs)…上一篇对自定义View及一些方法有所了解下面做一个简单的叶子飘动的例子主要技术点1、添加背景图片canvas.drawBitmap()2、Matrix动画类3、Matrix添加到画布上步骤1、添加黄色背景颜色public LeafView(Context context, AttributeSet attrs) {super(context, attrs);bgPaint new Paint();bgPaint.setColor(mResources.getColor(R.color.bg_color));}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);width w;height h;}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);bgRect new RectF(0, 0 , width, height);canvas.drawRect(bgRect, bgPaint);}2、添加背景图片public LeafView(Context context, AttributeSet attrs) {super(context, attrs);mResources getResources();bgBitmap ((BitmapDrawable) mResources.getDrawable(R.drawable.leaf_kuang, null)).getBitmap();bgPaint new Paint();bgPaint.setColor(mResources.getColor(R.color.bg_color));}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);width w;height h;bgDestRect new Rect(0, 0 , width, height);}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);bgRect new RectF(0, 0 , width, height);canvas.drawRect(bgRect, bgPaint);canvas.drawBitmap(bgBitmap, null, bgDestRect, null);}canvas.drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) 添加图片到画布Rect src图片剪裁,null图片显示全屏 RectF dst图片在Canvas画布区域3、添加叶子public LeafView(Context context, AttributeSet attrs) {super(context, attrs);mResources getResources();bgBitmap ((BitmapDrawable) mResources.getDrawable(R.drawable.leaf_kuang, null)).getBitmap();leafBitmap ((BitmapDrawable) mResources.getDrawable(R.drawable.leaf, null))).getBitmap();bgPaint new Paint();bgPaint.setColor(mResources.getColor(R.color.bg_color));}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);width w;height h;bgDestRect new Rect(0, 0 , width, height);}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);bgRect new RectF(0, 0 , width, height);//添加黄色背景canvas.drawRect(bgRect, bgPaint);//添加背景图片canvas.drawBitmap(bgBitmap, null, bgDestRect, null);//添加叶子canvas.drawBitmap(leafBitmap, new Matrix(), new Paint());}canvas.drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)添加一个带动画的bitmap到画布这里matrix什么都没定义所以默认如下显示左上角叶子4、给叶子添加Matrix动画Matrix作用a、translate 平移b、rotate 旋转c、scale 缩放d、skew 倾斜这里要用到matrix.postTranslate(float x, float y)以画布左上角为(0,0); xy为平移绝对值public LeafView(Context context, AttributeSet attrs) {super(context, attrs);mResources getResources();bgBitmap ((BitmapDrawable) mResources.getDrawable(R.drawable.leaf_kuang, null)).getBitmap();leafBitmap ((BitmapDrawable) mResources.getDrawable(R.drawable.leaf, null))).getBitmap();mLeafHeight leafBitmap.getWidht();bgPaint new Paint();bgPaint.setColor(mResources.getColor(R.color.bg_color));}Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);width w;height h;bgDestRect new Rect(0, 0 , width, height);}Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);bgRect new RectF(0, 0 , width, height);//添加黄色背景canvas.drawRect(bgRect, bgPaint);//添加背景图片canvas.drawBitmap(bgBitmap, null, bgDestRect, null);//添加叶子Matrix matrix new Matrix();matrix.postTranslate(getMatriX(), (height-mLeadHeight)/2);canvas.drawBitmap(leafBitmap, new Matrix(), new Paint());//重复调用onDraw()postInvalidate();}long cycleTime 5000; //叶子滑动一周的时间5秒long startTime 0; //叶子滑动开始时间private float getMatriX() {float betweenTime startTime - System.currentTimeMillis();//周期结束再加一个cycleTimeif(betweenTime 0) {startTime System.currentTimeMillis() cycleTime;betweenTime cycleTime;}//通过时间差计算出叶子的坐标float fraction (float) betweenTime / cycleTime;float x (int)(width * fraction);return x;}好了看到的效果就是如下由于Matrix没有设置动画时间长度概念所以通过时间差来计算出位移值的方式来设置滑动快慢完整代码不贴了就把上面这段代码复制到一个LeafView extends View中然后在里面定义几个全局变量就好了。以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持找一找教程网。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88280.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!