package com.love.activity;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.love.R;
import com.love.factory.ImageNameFactory;
import com.love.util.DeviceInfo;
import com.love.util.ImageUtils;
import com.love.view.bluesnow.FlowerView;
import com.love.view.heart.HeartLayout;
import com.love.view.typewriter.TypeTextView;
import com.love.view.whitesnow.SnowView;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action0;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
public class MainActivity extends Activity {
private static final String JPG = ".jpg";
private static final String LOVE = "2016接近尾声,请给忙碌的自己道声平安,平安夜来了,送上悄悄地祝福,一生平安,圣诞快乐,来年好运!";
private static final int SNOW_BLOCK = 1;
public static final String URL = "file:///android_asset/index.html";
private Canvas mCanvas;
private int mCounter;
private FrameLayout root_fragment_layout = null; // 根布局
private FrameLayout mWebViwFrameLayout = null; // 背景图上面的布局
private ImageView mImageView;// 中间的图片
private SnowView mWhiteSnowView; // 刚开始的白色雪花
private HeartLayout mHeartLayout; // 右侧垂直方向的漂浮红心
private FlowerView mBlueSnowView; // 蓝色的雪花
private TypeTextView mTypeTextView; // 雪花完了之后显示文字的控件
private Handler mHandler = new Handler() {
public void dispatchMessage(Message msg) {
MainActivity.this.mBlueSnowView.inva();
}
};
private Bitmap mManyBitmapSuperposition;
private Random mRandom = new Random();
private Random mRandom2 = new Random();
private TimerTask mTask = null;
private WebSettings mWebSettings;
private WebView mWebView;
private Timer myTimer = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DeviceInfo.getInstance().initializeScreenInfo(this);
setContentView(R.layout.main);
initView();
initWebView();
// 雪花完了之后就去加载WebView
delayShowAll(3000L);
}
private void initWebView() {
this.mWebSettings = this.mWebView.getSettings();
this.mWebSettings.setJavaScriptEnabled(true);
this.mWebSettings.setBuiltInZoomControls(false);
this.mWebSettings.setLightTouchEnabled(false);
this.mWebSettings.setSupportZoom(false);
this.mWebView.setHapticFeedbackEnabled(false);
}
/**
* 初始化控件
*/
private void initView() {
mWebViwFrameLayout = (FrameLayout) findViewById(R.id.fl_webView_layout);
root_fragment_layout = (FrameLayout) findViewById(R.id.root_fragment_layout);
this.mWebView = new WebView(getApplicationContext());
this.mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
this.mWebView.setVisibility(View.GONE);
FrameLayout.LayoutParams fp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
fp.gravity = Gravity.CENTER;
mWebViwFrameLayout.addView(mWebView);
this.mHeartLayout = (HeartLayout) findViewById(R.id.heart_o_red_layout);
this.mTypeTextView = (TypeTextView) findViewById(R.id.typeTextView);
this.mWhiteSnowView = (SnowView) findViewById(R.id.whiteSnowView);
this.mImageView = (ImageView) findViewById(R.id.image);
this.mBlueSnowView = (FlowerView) findViewById(R.id.flowerview);
this.mBlueSnowView.setWH(DeviceInfo.mScreenWidthForPortrait, DeviceInfo.mScreenHeightForPortrait, DeviceInfo.mDensity);
this.mBlueSnowView.loadFlower();
this.mBlueSnowView.addRect();
this.myTimer = new Timer();
// 发消息白色雪花
this.mTask = new TimerTask() {
public void run() {
Message msg = new Message();
msg.what = MainActivity.SNOW_BLOCK;
MainActivity.this.mHandler.sendMessage(msg);
}
};
// 从assets文件夹下初始化背景图片
rxJavaSolveMiZhiSuoJinAndNestedLoopAndCallbackHell();
this.myTimer.schedule(this.mTask, 5200, 10); // 设置白色雪花的定时
// 中间文字显示完之后开始雪花飘落
this.mTypeTextView.setOnTypeViewListener(new TypeTextView.OnTypeViewListener() {
public void onTypeStart() {
// 每次开始设置随机颜色
MainActivity.this.mTypeTextView.setTextColor(randomColor());
}
public void onTypeOver() {
delayShowTheSnow();
}
});
this.mTypeTextView.setText("");
}
@Override
protected void onDestroy() {
super.onDestroy();
cancelTimer();
if (this.mWebView != null) {
if (mWebViwFrameLayout != null) {
this.mWebViwFrameLayout.removeAllViewsInLayout();
this.mWebViwFrameLayout.removeAllViews();
}
this.mWebView.removeAllViews();
this.mWebView.destroy();
this.mWebView = null;
}
unBindDrawables(findViewById(R.id.root_fragment_layout));
System.gc();
}
private void cancelTimer() {
if (this.myTimer != null) {
this.myTimer.cancel();
this.myTimer = null;
}
if (this.mTask != null) {
this.mTask.cancel();
this.mTask = null;
}
}
private void createSingleImageFromMultipleImages(Bitmap bitmap, int mCounter) {
if (mCounter == 0) {
try {
this.mManyBitmapSuperposition = Bitmap.createBitmap(DeviceInfo.mScreenWidthForPortrait,
DeviceInfo.mScreenHeightForPortrait, bitmap.getConfig());
this.mCanvas = new Canvas(this.mManyBitmapSuperposition);
} catch (OutOfMemoryError error) {
error.printStackTrace();
System.gc();
} finally {
}
}
if (this.mCanvas != null) {
int number = DeviceInfo.mScreenHeightForPortrait / 64;
if (mCounter >= (mCounter / number) * number && mCounter < ((mCounter / number) + SNOW_BLOCK) * number) {
this.mCanvas.drawBitmap(bitmap, (float) ((mCounter / number) * 64), (float) ((mCounter % number) * 64), null);
}
}
}
private void rxJavaSolveMiZhiSuoJinAndNestedLoopAndCallbackHell() {
Observable.from(ImageNameFactory.getAssetImageFolderName())
.flatMap(new Func1<String, Observable<String>>() {
public Observable<String> call(String folderName) {
return Observable.from(ImageUtils.getAssetsImageNamePathList(MainActivity.this.getApplicationContext(), folderName));
}
}).filter(new Func1<String, Boolean>() {
public Boolean call(String imagePathNameAll) {
return Boolean.valueOf(imagePathNameAll.endsWith(MainActivity.JPG));
}
}).map(new Func1<String, Bitmap>() {
public Bitmap call(String imagePathName) {
return ImageUtils.getImageBitmapFromAssetsFolderThroughImagePathName(MainActivit
没有合适的资源?快使用搜索试试~ 我知道了~
平安夜+圣诞节小程序(祝福).zip
共50个文件
java:15个
xml:13个
gradle:3个
需积分: 5 0 下载量 81 浏览量
2023-12-06
08:37:36
上传
评论
收藏 332KB ZIP 举报
温馨提示
平安夜+圣诞节小程序(祝福).zip
资源推荐
资源详情
资源评论
收起资源包目录
平安夜+圣诞节小程序(祝福).zip (50个子文件)
010
gradle.properties 855B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 233B
app
src
main
assets
js
functions.js 4KB
garden.js 7KB
jquery.js 70KB
css
default.css 1KB
love.html 4KB
dongyu
linzhengxin.jpg 137KB
index.html 2KB
java
com
mjj
constant
Constant.java 257B
factory
ImageNameFactory.java 588B
activity
MainActivity.java 14KB
view
whitesnow
SnowView.java 2KB
Random.java 491B
SnowFlake.java 3KB
typewriter
TypeTextView.java 4KB
bluesnow
FlowerView.java 5KB
heart
PathAnimator.java 4KB
HeartView.java 4KB
AbstractPathAnimator.java 4KB
HeartLayout.java 2KB
util
ImageUtils.java 7KB
DeviceInfo.java 1KB
ClickUtils.java 2KB
res
mipmap-xxhdpi
gift.PNG 96KB
app_icon.jpg 7KB
values
dimens.xml 706B
colors.xml 208B
integers.xml 170B
strings.xml 78B
attrs.xml 666B
styles.xml 216B
layout
main.xml 2KB
activity_browser.xml 378B
drawable
heart.png 1KB
heart_border.png 956B
AndroidManifest.xml 762B
proguard-rules.pro 660B
build.gradle 830B
.gitignore 7B
gradlew.bat 2KB
build.gradle 497B
.idea
misc.xml 1KB
compiler.xml 686B
gradle.xml 626B
copyright
profiles_settings.xml 74B
settings.gradle 15B
gradlew 5KB
.gitignore 97B
共 50 条
- 1
资源评论
LeapMay
- 粉丝: 2w+
- 资源: 2302
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功