日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android自定義View實現雪花特效

瀏覽:30日期:2022-09-20 18:28:51

本文實例為大家分享了Android自定義View實現雪花特效展示的具體代碼,供大家參考,具體內容如下

效果圖

Android自定義View實現雪花特效

1.SnowView 類

package com.ilz.rocketapplication.handaccount.view; import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.GestureDetector;import android.view.MotionEvent;import android.widget.RelativeLayout; import com.ilz.rocketapplication.handaccount.R;import com.ilz.rocketapplication.handaccount.bean.SnowBean;import com.ilz.rocketapplication.handaccount.utils.ColorUtils;import com.ilz.rocketapplication.handaccount.utils.Tools; import java.util.ArrayList;import java.util.List;import java.util.Timer;import java.util.TimerTask; public class SnowView extends RelativeLayout {// private final String SNOW = '❄';// private final String SNOW = '☀❆★❉❈❀✿❃❁'; private final String SNOW = '❄'; private float vX = 2.5f;//風向 >0 右邊飄 <0 左邊飄 private float vY = 5f;//下落速度 <0你的雪花要往上飄呀 private int snowCount = 50;//雪花個數 private List<SnowBean> snowBeanList = new ArrayList<>(); private int XB = Tools.getWindowsWidth(); private int YB = Tools.getWindowsHeight(); private Paint paint = new Paint(); private Timer timer; private boolean isStart = false; public SnowView(Context context) { this(context, null); } public SnowView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SnowView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); } private void initView() { paint.setAntiAlias(true); initSnowData(); } public void start() { if (timer == null) { timer = new Timer(); } isStart = true; timer.schedule(new TimerTask() { @Override public void run() { if (!isStart) return; for (int i = 0; i < snowBeanList.size(); i++) { snowBeanList.get(i).setX(snowBeanList.get(i).getX() + vX); snowBeanList.get(i).setY(snowBeanList.get(i).getY() + vY); if (snowBeanList.get(i).getX() < 0 || snowBeanList.get(i).getX() > XB) { snowBeanList.get(i).setX(getRandomX()); } if (snowBeanList.get(i).getY() < 0 || snowBeanList.get(i).getY() > YB) { snowBeanList.get(i).setY(0f); } } postInvalidate(); } }, 0, 15); } public void resume() { if (timer == null) { start(); } isStart = true; } public void pause(){ isStart = false; } public void destroy() { isStart = false; if (snowBeanList != null) { snowBeanList.clear(); } invalidate(); if (timer != null) { timer.cancel(); timer = null; } } private void initSnowData() { for (int i = 0; i < snowCount; i++) { SnowBean bean = new SnowBean(); bean.setX(getRandomX()); bean.setY(getRandomY()); bean.setSize((float) (Math.random() * 50) + 5); snowBeanList.add(bean); } } private float getRandomX() { return (float) (Math.random() * Tools.getWindowsWidth()); } private float getRandomY() { return (float) (Math.random() * Tools.getWindowsHeight()); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); for (int i = 0; i < snowBeanList.size(); i++) { SnowBean bean = snowBeanList.get(i); paint.setTextSize(bean.getSize()); paint.setColor(bean.getColor()); canvas.drawText(SNOW, bean.getX(), bean.getY(), paint); } } private GestureDetector detector = new GestureDetector(getContext(),new MyGestureDetector()); private boolean isPoint = false; private long pointTime = 0; @Override public boolean onTouchEvent(MotionEvent event) {// switch (event.getAction()) {// case MotionEvent.ACTION_DOWN:// pointTime = 0;// int pCount = event.getPointerCount();// if (pCount >= 2) {// isPoint = true;// pointTime = System.currentTimeMillis();// }// break;// case MotionEvent.ACTION_MOVE:// break;// case MotionEvent.ACTION_UP:// isPoint = false;// pointTime = 0;// break;// } // return super.onTouchEvent(event); return detector.onTouchEvent(event); } private class MyGestureDetector implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener { @Override public boolean onDown(MotionEvent e) { return false; } @Override public void onShowPress(MotionEvent e) { } @Override public boolean onSingleTapUp(MotionEvent e) { return false; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } @Override public boolean onSingleTapConfirmed(MotionEvent e) { return false; } @Override public boolean onDoubleTap(MotionEvent e) { return false; } @Override public boolean onDoubleTapEvent(MotionEvent e) { return false; } }}

2.SnowBean

package com.ilz.rocketapplication.handaccount.bean; import android.graphics.Color; import com.ilz.rocketapplication.handaccount.utils.ColorUtils; public class SnowBean { float x; float y; float size; int color = Color.WHITE; public float getX() { return x; } public void setX(float x) { this.x = x; } public float getY() { return y; } public void setY(float y) { this.y = y; } public float getSize() { return size; } public void setSize(float size) { this.size = size; } public int getColor() { return color; } public void setColor(int color) { this.color = color; }}

3.Tools

/** * 獲取屏幕的寬度*/ public static int getWindowsWidth() { WindowManager wm = (WindowManager) (MyApplication.getInstance().getSystemService(Context.WINDOW_SERVICE)); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int mScreenWidth = dm.widthPixels; return mScreenWidth; } /** * 獲取屏幕的高度 */ public static int getWindowsHeight() { WindowManager wm = (WindowManager) (MyApplication.getInstance().getSystemService(Context.WINDOW_SERVICE)); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); int mScreenHeigh = dm.heightPixels; return mScreenHeigh; }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区二区精品| 欧美日韩视频免费观看| 9色国产精品| 影音国产精品| 免费精品视频| 亚洲精品美女91| 日韩和欧美的一区| 国产日韩欧美一区| 国产精品入口久久| 精品亚洲二区| 日韩av自拍| 精品欧美一区二区三区在线观看| 日韩在线第七页| 国产精品99免费看| 亚洲永久精品唐人导航网址| 日韩二区在线观看| 欧美a级一区二区| av高清不卡| 亚洲欧美日本视频在线观看| 日本va欧美va精品发布| 久久av免费看| 国产美女高潮在线观看| 欧美一级精品| 免费一级片91| 91久久精品无嫩草影院| 欧美国产中文高清| 国产精品麻豆久久| 五月天激情综合网| 日韩免费精品| 中文字幕在线免费观看视频| 亚州av乱码久久精品蜜桃| 亚洲精品伊人| 91欧美日韩| 午夜精品婷婷| 91麻豆精品激情在线观看最新| 久久99国产精品视频| 在线视频观看日韩| 日韩国产精品久久久久久亚洲| 欧美精品97| 国产字幕视频一区二区| 蜜桃传媒麻豆第一区在线观看| 国产精品尤物| 激情五月色综合国产精品| 日韩国产高清在线| 日韩成人高清| 日韩av成人高清| 在线观看精品| 91欧美日韩在线| 久久久人人人| 国产日韩免费| 激情久久久久久| 欧美日韩午夜电影网| 欧洲av不卡| 涩涩涩久久久成人精品| 伊人久久视频| 日韩在线视频一区二区三区| 成人国产综合| 亚洲精品极品| 久久九九电影| 国产乱码精品一区二区三区四区 | 国产 日韩 欧美 综合 一区| 免费视频国产一区| 日本免费一区二区视频| 国产不卡一区| 日韩精品久久理论片| 久久久777| 国产精品视频一区二区三区四蜜臂 | 日韩国产欧美在线播放| 久久精品亚洲人成影院| 欧美另类中文字幕| 国产精品色网| 91亚洲国产| 欧美私人啪啪vps| 午夜在线视频一区二区区别| 国产精品精品| 国产欧美在线| 欧美日韩四区| 麻豆mv在线观看| 国产精品一级在线观看| 免费久久精品视频| 久久精品电影| 精品国产不卡| 欧美日韩a区| 在线免费观看亚洲| 欧美日韩水蜜桃| 精品国产a一区二区三区v免费| 日韩国产欧美在线播放| 日韩中文字幕不卡| jiujiure精品视频播放| 天堂中文在线播放| 免费在线亚洲欧美| 亚洲乱亚洲高清| 黄色日韩在线| 九九综合在线| 亚洲不卡av不卡一区二区| 精品久久网站| 国产精品va| 欧美日韩中出| 日韩精品国产欧美| 亚洲免费观看高清完整版在线观| 国产一级久久| 亚洲免费激情| 免费av一区| 欧美日韩一二三四| 91精品啪在线观看国产18| 91偷拍一区二区三区精品| 国产精选一区| 国产精品羞羞答答在线观看| 欧美伊人久久| 久久国产婷婷国产香蕉| 日韩一区二区三区高清在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 久久影院一区| 999久久久亚洲| 久久久久久久久99精品大| 日韩免费av| 欧美特黄一级大片| 欧美不卡高清| 欧洲激情综合| 久久国产99| 蜜桃视频在线观看一区二区| 亚洲深爱激情| 丝袜国产日韩另类美女| 亚洲永久精品唐人导航网址| 亚洲深夜福利在线观看| 亚洲精品护士| 欧美一区自拍| 精品一区二区三区的国产在线观看| 麻豆传媒一区二区三区| 福利一区和二区| 日韩欧美一区二区三区在线观看| 韩国精品主播一区二区在线观看| 久久精品导航| 国产模特精品视频久久久久| 久久香蕉精品| 日本不卡中文字幕| 日韩精品视频中文字幕| 国产精品久久久久毛片大屁完整版 | 福利片在线一区二区| а√天堂8资源在线| 色婷婷狠狠五月综合天色拍| 亚洲欧美伊人| 中文字幕中文字幕精品| 日本少妇精品亚洲第一区| 国产精品一区2区3区| 久久久久久婷| 午夜精品一区二区三区国产| 亚洲1区在线观看| 日韩精品一页| 精品欠久久久中文字幕加勒比| 桃色av一区二区| 国产精品日韩欧美一区| 日韩av午夜在线观看| 国产伊人久久| 欧美日韩国产在线观看网站| 亚洲欧美网站在线观看| 精品香蕉视频| 免费av一区| 日本三级亚洲精品| sm久久捆绑调教精品一区| 久久国产中文字幕| 亚洲三级视频| 久久中文欧美| 久久激情婷婷| 亚洲精品自拍| 成人在线超碰| 亚洲一区欧美二区| 国产美女久久| 婷婷综合六月| 日韩三级视频| 精品成人免费一区二区在线播放| 亚洲欧美日韩一区在线观看| 国产美女视频一区二区| 久久国产免费| 青青草91久久久久久久久| 日本不良网站在线观看| 综合激情网...| 日韩1区在线| 亚洲一区二区三区高清| 欧美激情aⅴ一区二区三区| 欧美中文字幕一区二区| 日韩二区三区四区| 久久亚洲专区| 国产精品久久久久久久久免费高清| 色综合www| 日韩高清二区| 国产国产精品| 久久一区国产| 综合一区二区三区| 欧洲精品一区二区三区| 欧美日韩亚洲一区二区三区在线| 久久婷婷一区| 老司机精品在线| 黄色不卡一区| 久久精品女人| 日韩综合小视频| 久久亚洲国产| 久久免费视频66| 亚洲精品麻豆| 136国产福利精品导航网址|