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

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

Android自定義View實現雪花特效

瀏覽:29日期: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久久,三上悠亚国产精品一区二区三区
亚洲一区二区日韩| 蜜桃视频在线网站| av亚洲免费| 日韩成人亚洲| 欧洲一级精品| 久久久久午夜电影| 99久久久久国产精品| 久久美女精品| 亚洲激情二区| 久久国产88| 亚洲乱亚洲高清| 日本不卡高清视频| 国产精一区二区| 欧美日韩亚洲一区二区三区在线| 日韩福利视频网| 国产精品qvod| 精品久久99| 精品亚洲美女网站| 一区免费视频| 蜜臀久久久99精品久久久久久| 免费人成在线不卡| 日本成人在线不卡视频| 国产欧美另类| 精品欧美日韩精品| 久久精品动漫| 另类av一区二区| 欧美另类中文字幕| 国产一区二区三区久久久久久久久| 国产成人精品福利| 日韩一区二区在线免费| 欧美一级精品| 一区二区三区国产盗摄| 911精品国产| 国产aⅴ精品一区二区四区| 欧美亚洲日本精品| 夜夜精品视频| 久久国产三级精品| 免费高潮视频95在线观看网站| 欧美日韩国产高清电影| 一区二区国产精品| 国产精品对白| japanese国产精品| 日本久久一区| 国产成人免费av一区二区午夜| 999国产精品视频| 亚洲毛片视频| 日本一二区不卡| 一区福利视频| 国产精品玖玖玖在线资源| 黑人精品一区| 久久最新视频| 美女精品视频在线| 美女久久久久| 欧美亚洲一区二区三区| 少妇精品导航| 日韩欧美久久| 视频福利一区| 日韩不卡手机在线v区| 欧美日韩尤物久久| 亚洲a成人v| 日韩精品诱惑一区?区三区| 亚洲精品在线国产| 日韩在线第七页| 亚洲日产av中文字幕| 91亚洲成人| 91精品国产调教在线观看| 久久中文视频| 国产精品亚洲片在线播放| 欧美激情久久久久久久久久久| 色天使综合视频| 日韩精品欧美成人高清一区二区| 国产一区精品福利| 一区二区三区四区日韩| 亚洲一级少妇| 亚洲精品日本| 丝袜诱惑制服诱惑色一区在线观看| 大香伊人久久精品一区二区| 亚洲五月综合| 欧美a级片一区| 精品亚洲免a| 欧美日韩一区二区三区在线电影| 欧美三级精品| 日韩有吗在线观看| 免费看av不卡| 国产亚洲高清在线观看| 在线亚洲观看| 日韩精品第一区| 国产精品一区二区精品| 亚洲香蕉久久| 日韩在线短视频| 国产精品一区二区精品| 亚洲人www| 狠狠操综合网| 丝袜美腿一区| 精品国产乱码久久久久久樱花| 亚洲三级网站| 99精品99| 亚洲高清成人| 中文字幕在线视频网站| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 成人精品国产亚洲| japanese国产精品| 成人午夜亚洲| 丝袜美腿成人在线| 99久久婷婷这里只有精品| 国产精品观看| 国产精品大片免费观看| 中文字幕成在线观看| 欧美精品观看| 日日夜夜免费精品| 久久久久久美女精品| 国产成人精选| 麻豆国产91在线播放| 欧美专区一区| 午夜电影一区| 亚洲精品大片| 亚洲男人在线| 蜜桃免费网站一区二区三区| 国产精品视区| 首页欧美精品中文字幕| 国产亚洲精品v| 日韩一区二区免费看| 99国产精品99久久久久久粉嫩| 欧洲激情综合| 樱桃成人精品视频在线播放| 日韩和的一区二在线| 中文另类视频| 久久精品成人| 91精品国产调教在线观看| 久久免费国产| 亚洲香蕉网站| 亚洲美洲欧洲综合国产一区| 欧美成人午夜| 伊人久久亚洲热| 亚洲视频国产精品| 日韩精彩视频在线观看| 国产欧美日韩精品一区二区三区| 国产精品九九| 激情中国色综合| 欧美天堂视频| 久久视频一区| 性一交一乱一区二区洋洋av| 六月丁香综合| 亚洲精品中文字幕乱码| 91欧美极品| 亚洲www啪成人一区二区| 欧美午夜不卡| 国产精品igao视频网网址不卡日韩| 日韩成人免费| 国产精品美女久久久浪潮软件| 欧美激情在线精品一区二区三区| 久久国产中文字幕| 日韩国产在线| 欧美日韩四区| 日本中文字幕视频一区| 综合日韩在线| 国产精品黄色片| 高清精品久久| 久久久91麻豆精品国产一区| 亚洲欧美日本国产专区一区| 欧美日韩一二三四| 精品一区二区三区视频在线播放| 国产一区二区高清| 99tv成人| 国产精品片aa在线观看| 国产精品久久久久久久久免费高清| 国产精品久久久久久妇女| 日本视频在线一区| 亚洲一区二区日韩| 久久精品亚洲一区二区| 久久超碰99| 亚洲成人不卡| 石原莉奈在线亚洲二区| 欧美1区免费| 爽好多水快深点欧美视频| 久久在线免费| 日本在线高清| 日韩一区二区久久| 国产精品最新自拍| 丝袜脚交一区二区| 欧美日韩va| 中文在线а√天堂| 免费观看在线综合色| 国产精品高清一区二区| 99视频精品全部免费在线视频| 91成人超碰| 久久不见久久见中文字幕免费 | 极品日韩av| 91精品日本| 亚洲91久久| 国产日韩欧美| 欧美特黄a级高清免费大片a级| 国产精品久久久一区二区| 激情自拍一区| 美女性感视频久久| 婷婷亚洲综合| 久久av网址| 视频一区中文字幕| 亚洲国产成人二区| 无码日韩精品一区二区免费|