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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要追加额外费用) 随着移动互联网技术的发展和用户需求的变化,【小程序名称】应运而生,以其轻量化、便捷化的设计理念为用户提供了一种全新的服务模式。作为一款无需下载安装即可使用的应用,【小程序名称】依托于微信庞大的生态系统,让用户在微信内就能轻松实现各种功能操作。 【小程序名称】的核心功能主要集中在【具体服务领域】,例如在线购物、本地生活服务、教育学习或健康管理等。它简化了传统APP繁琐的注册登录流程,支持微信一键授权登录,极大地提升了用户体验。用户通过搜索或扫描二维码,瞬间即可开启使用,享受快速加载、流畅运行的服务。 该小程序界面设计简洁明了,布局合理,易于上手。同时,其特色功能如实时更新的信息推送、个性化推荐以及社交分享功能,让用户能够及时获取所需信息,并方便地将优质内容分享至朋友圈或好友,实现信息的高效传播与互动。 【小程序名称】注重数据安全与隐私保护,严格遵守国家法律法规和微信平台的规定,确保用户数据的安全无虞。此外,其背后的开发团队持续迭代更新,根据用户反馈不断优化产品性能,提升服务质量,致力于打造一个贴近用户需求、充满活力的小程序生态。 总结来说,【小程序名称】凭借其小巧便携、快捷高效的特性,不仅节省了用户的手机存储空间,更为用户提供了无缝衔接的便利服务,是现代生活中不可或缺的一部分,真正实现了“触手可及”的智能生活新体验。只需轻点屏幕,无限精彩尽在掌握之中。
资源推荐
资源详情
资源评论
收起资源包目录
平安夜+圣诞节小程序(祝福).zip (50个子文件)
SJT-code
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
资源评论
JJJ69
- 粉丝: 6232
- 资源: 5778
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于AVR单片机的伺服电机系统研究
- Lab-Electronic Craft Practicum-2-Simulation of a Single Tube Com
- 贪吃蛇基于TypeScript
- CS-CP1-2C3WF固件
- 软件测试测试用例设计方法大全
- 计算机与网络基础知识要点学习
- 移动通信(RC-YDTX-III)实验指导书
- [Vadass (Oltlo)]Cheating Wife Honoka ~Caught Red-Handed Edition~ [Chinese] [Colorized].jpg
- 1_9如果没有李白.zip
- 知识蒸馏-基于Tensorflow实现的无数据知识蒸馏-附项目源码+流程教程-优质项目分享.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功