真正意义上第一个APP 可以用的 老黄历~~~
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
/**
* Created by admin on 2016/4/4.
*/
public class OpenLoading extends Activity {
private TextView openText,coupletUp,coupletDown,myText;
final Calendar c = Calendar.getInstance();
int mainYear = c.get(Calendar.YEAR);//获取当前年份
int mainMonth = c.get(Calendar.MONTH);//获取当前的月份
int mainday = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码 ;
boolean open = true;
String dateString = mainYear + "-" + (mainMonth + 1) + "-" + mainday;//当前日期的需求字符串形式
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//加载欢迎页面
setContentView(R.layout.login_layout);
openText = (TextView) findViewById(R.id.open_text);
coupletUp= (TextView) findViewById(R.id.textView1);
coupletDown= (TextView) findViewById(R.id.textView2);
myText= (TextView) findViewById(R.id.textView3);
AssetManager mgr = getAssets();//得到AssetManager
Typeface tf = Typeface.createFromAsset(mgr, "font/open.ttf");//根据路径得到Typeface
openText.setTypeface(tf);
coupletUp.setTypeface(tf);
coupletDown.setTypeface(tf);
myText.setTypeface(tf);
OpenWithHttpConnection(dateString);
}
Handler mhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 308040) {
Log.d("MainActivity", "已接收");
String[] getdataOpen = (String[]) msg.obj;
if (open) {
open = false;
Intent intent = new Intent(OpenLoading.this, MainActivity.class);
Bundle bundle = new Bundle();
bundle.putStringArray("dateString_fromOpen", getdataOpen);
intent.putExtras(bundle);
startActivity(intent);
finish();
}
}
}
};
//appkey:92530afe8465b7f2d316a6c21ac614b7
private void OpenWithHttpConnection(final String dateString) {
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://v.juhe.cn/laohuangli/d?date=" + dateString + "&key=92530afe8465b7f2d316a6c21ac614b7");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in = connection.getInputStream();
//对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
/*
截止到以上在 线程中获得了 返回的JSON信息 response
使用时记得使用response.toString()
*/
//在另一个方法中开启新线程中处理获得的JOSN数据
handeleJOSN(response.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
/*
下面的方法中处理接收到的JSON数据
JSON返回示例:
{
"reason": "successed",
"result": {
"id": "1657",
"yangli": "2014-09-11",
"yinli": "甲午(马)年八月十八",
"wuxing": "井泉水 建执位",
"chongsha": "冲兔(己卯)煞东",
"baiji": "乙不栽植千株不长 酉不宴客醉坐颠狂",
"jishen": "官日 六仪 益後 月德合 除神 玉堂 鸣犬",
"yi": "祭祀 出行 扫舍 馀事勿取",
"xiongshen": "月建 小时 土府 月刑 厌对 招摇 五离",
"ji": "诸事不宜"
},
"error_code": 0
}
*/
private void handeleJOSN(String s) {
try {
JSONObject getData = new JSONObject(s);
String result = getData.getString("result");
JSONObject data = new JSONObject(result);
String yangli = data.getString("yangli");
String yinli = data.getString("yinli");
String wuxing = data.getString("wuxing");
String chongsha = data.getString("chongsha");
String baiji = data.getString("baiji");
String jishen = data.getString("jishen");
String yi = data.getString("yi");
String xiongshen = data.getString("xiongshen");
String ji = data.getString("ji");
Log.d("MainActivity", yangli);
Log.d("MainActivity", yinli);
Log.d("MainActivity", wuxing);
//把所有数据装载在一个数组里
String[] allDate = {yinli, wuxing, chongsha, baiji, jishen, yi, xiongshen, ji};
//然后把数组装载在message中传回去
Message messageOpen = new Message();
messageOpen.what = 308040;
messageOpen.obj = allDate;
mhandler.sendMessageDelayed(messageOpen,2000);
Log.d("MainActivity", "已发送");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends Activity {
private TextView date, text_yinli, text_wuxing, text_chongsha,
text_baiji, text_jishen, text_yi, text_xiongshen, text_ji,
baiji_title, jishen_title, yi_title, xiongshen_title, ji_title;
final Calendar c = Calendar.getInstance();
int mainYear = c.get(Calendar.YEAR);//获取当前年份
int mainMonth = c.get(Calendar.MONTH);//获取当前的月份
int mainday = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码 ;
boolean first = true;
String dateString = mainYear + "-" + mainMonth + "-" + mainday;//当前日期的需求字符串形式
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 12345:
String[] getData = (String[]) msg.obj;
text_yinli.setText("阴历" + getData[0]);
text_wuxing.setText("五行: " + getData[1]);
text_chongsha.setText("冲煞: " + getData[2]);
text_baiji.setText(getData[3]);
text_jishen.setText(getData[4]);
text_yi.setText(getData[5]);
text_xiongshen.setText(getData[6]);
text_ji.setText(getData[7]);
break;
case 54321:
String[] getData0 = (String[]) msg.obj;
text_yinli.setText("阴历"+getData0[0]);
text_wuxing.setText("五行: " + getData0[1]);
text_chongsha.setText("冲煞: " + getData0[2]);
text_baiji.setText(getData0[3]);
text_jishen.setText(getData0[4]);
text_yi.setText(getData0[5]);
text_xiongshen.setText(getData0[6]);
text_ji.setText(getData0[7]);
break;
default:
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
AssetManager mgr = getAssets();//得到AssetManager
Typeface tf = Typeface.createFromAsset(mgr, "font/open.ttf");//根据路径得到Typeface
Typeface tf2 = Typeface.createFromAsset(mgr, "font/aaa.ttf");
if (first) {
Log.d("MainActivity", "已接收2");
first = false;
Bundle bundle = this.getIntent().getExtras();
String[] getFromOpen = bundle.getStringArray("dateString_fromOpen");
Message messageGetFromOpen = new Message();
messageGetFromOpen.what = 54321;
messageGetFromOpen.obj = getFromOpen;
handler.sendMessage(messageGetFromOpen);
}
date = (TextView) findViewById(R.id.date);
text_yinli = (TextView) findViewById(R.id.yinli);
text_wuxing = (TextView) findViewById(R.id.wuxing);
text_chongsha = (TextView) findViewById(R.id.chongsha);
text_baiji = (TextView) findViewById(R.id.baiji);
text_jishen = (TextView) findViewById(R.id.jishen);
text_yi = (TextView) findViewById(R.id.yi);
text_xiongshen = (TextView) findViewById(R.id.xiongshen);
text_ji = (TextView) findViewById(R.id.ji);
baiji_title = (TextView) findViewById(R.id.baiji_title);
jishen_title = (TextView) findViewById(R.id.jishen_title);
yi_title = (TextView) findViewById(R.id.yi_title);
xiongshen_title = (TextView) findViewById(R.id.xiongshen_title);
ji_title = (TextView) findViewById(R.id.ji_title);
date.setTypeface(tf2);
text_yinli.setTypeface(tf2);
text_wuxing.setTypeface(tf2);
text_chongsha.setTypeface(tf2);
text_baiji.setTypeface(tf2);
text_jishen.setTypeface(tf2);
text_yi.setTypeface(tf2);
text_xiongshen.setTypeface(tf2);
text_ji.setTypeface(tf2);
baiji_title.setTypeface(tf2);
jishen_title.setTypeface(tf2);
yi_title.setTypeface(tf2);
xiongshen_title.setTypeface(tf2);
ji_title.setTypeface(tf2);
date.setTypeface(tf);
date.setText(dateString);
}
// 日期选择对话框的 DateSet 事件监听器
private DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() { //
@Override
public void onDateSet(DatePicker arg0, int selectYear, int selectMonth, int selectDay) {
dateString = selectYear + "-" + (selectMonth + 1) + "-" + selectDay;
date.setText(dateString);
OpenWithHttpConnection(dateString);
}
};
//appkey:92530afe8465b7f2d316a6c21ac614b7
private void OpenWithHttpConnection(final String dateString) {
new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("http://v.juhe.cn/laohuangli/d?date=" + dateString + "&key=92530afe8465b7f2d316a6c21ac614b7");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in = connection.getInputStream();
//对获取到的输入流进行读取
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
/*
截止到以上在 线程中获得了 返回的JSON信息 response
使用时记得使用response.toString()
*/
//在另一个方法中开启新线程中处理获得的JOSN数据
handeleJOSN(response.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
/*
下面的方法中处理接收到的JSON数据
JSON返回示例:
{
"reason": "successed",
"result": {
"id": "1657",
"yangli": "2014-09-11",
"yinli": "甲午(马)年八月十八",
"wuxing": "井泉水 建执位",
"chongsha": "冲兔(己卯)煞东",
"baiji": "乙不栽植千株不长 酉不宴客醉坐颠狂",
"jishen": "官日 六仪 益後 月德合 除神 玉堂 鸣犬",
"yi": "祭祀 出行 扫舍 馀事勿取",
"xiongshen": "月建 小时 土府 月刑 厌对 招摇 五离",
"ji": "诸事不宜"
},
"error_code": 0
}
*/
private void handeleJOSN(String s) {
try {
JSONObject getData = new JSONObject(s);
String result = getData.getString("result");
JSONObject data = new JSONObject(result);
String yangli = data.getString("yangli");
String yinli = data.getString("yinli");
String wuxing = data.getString("wuxing");
String chongsha = data.getString("chongsha");
String baiji = data.getString("baiji");
String jishen = data.getString("jishen");
String yi = data.getString("yi");
String xiongshen = data.getString("xiongshen");
String ji = data.getString("ji");
Log.d("MainActivity", yangli);
Log.d("MainActivity", yinli);
Log.d("MainActivity", wuxing);
//把所有数据装载在一个数组里
String[] allDate = {yinli, wuxing, chongsha, baiji, jishen, yi, xiongshen, ji};
//然后把数组装载在message中传回去
Message message = new Message();
message.what = 12345;
message.obj = allDate;
handler.sendMessage(message);
} catch (JSONException e) {
e.printStackTrace();
}
}
//选择日期按键的触发事件:显示一个DatePickerDialog
public void dateClick(View view) {
switch (view.getId()) {
case R.id.date:
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, listener,
mainYear, mainMonth, mainday);
datePickerDialog.show();
break;
default:
break;
}
}
/**
* 菜单、返回键响应
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
exitBy2Click(); //调用双击退出函数
}
return false;
}
/**
* 双击退出函数
*/
private static Boolean isExit = false;
private void exitBy2Click() {
Timer tExit = null;
if (isExit == false) {
isExit = true; // 准备退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2500); // 如果2.5秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
} else {
finish();
System.exit(0);
}
}
}
真正意义上第一个APP 可以用的 老黄历~~~相关推荐
- Android启动一个app 流程
我们平时在手机桌面上点击一个app 图标, 就能启动一个app应用.从用户角度来看,这个过程看起来很简单,但是它的背后又隐藏着什么玄机 ? 在做安卓开发这么多年后,我觉得有必要认真的分析一下,启动一个 ...
- 读完这本书,我做了一个APP
你听说过番茄工作法吗?番茄工作法是一种简单易行的时间管理方法,可以让你很快的进入工作状态,更高效的完成一天的任务. 番茄工作法是以不断循环的"番茄"为基础的,一次工作-休息的循环被 ...
- 在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!
作者 | Bram Dingelstad 译者 | 弯月 责编 |徐威龙 封图| CSDN下载于视觉中国 我们都遇到过这种情况:有人发现了一个bug,然而这不是一般的软件bug,甚至都不是通常意义上的 ...
- 倾心家教安卓案例开发代码_开发一个APP多少钱?
从事互联网十余年,期间不少咨询这问过这个问题"开发一个APP多少钱?" 抠下字眼"开发"而不是购买,购买分多种方式,一种是买断,买的是源码(就是编写这个APP的 ...
- 转载非原创-- 一个APP的前世和今生
(1)前言 从今天开始,我会用一个系列的小文写一个我在2010年底开始进行的一个旅游App产品的开发经历.这个产品现在还在苹果的软件商店里,Apple AppStore,他有近7000的下载量.绝大多 ...
- gif透明背景动画_【超实用干货! 】iPad上的动画App大推荐
作者/立夏 编辑/彼方 大家好,我是立夏.大概在两年前吧我为大家写过几款动画APP的评测,这一次我也想给大家推荐一些我的新宠,供大家参考. 我在这里就不过多提及如Animation Desk.Proc ...
- SAAS将迎来真正意义上的春天
我在2005年创业时就想过要做到SAAS平台,只是无资金有压力,只好想想而已,那些年创业对我而言就是度过一个又一个的难关,让自已与团队活下去,活着比什么都重要.在活到2012年时我决定用有限的资 ...
- flutter笔记4:使用material原生控件开发一个APP
接着上一篇,我们做一个这样的APP: 开始之前,我发现了一个好玩的东西,每次我们在终端中输入命令: flutter run 终端里会有这个东西: 按照上图所示,我们的进入这个网页看看是个啥: 好高大上 ...
- 成都线上果蔬超市APP软件开发能够为用户提供什么?
如果经常购买水果的朋友就会知道,当我们想去买水果的时候总会发现自己买不到新鲜的水果,这也不奇怪,毕竟最新鲜的水果总是需要在固定的时间才会有的,虽说现在的水果保鲜技术做的也是非常好,但是偶尔还是比较难买 ...
最新文章
- 我先了解一下博客园创建随笔/文章/日记的过程与三者的区别(隐私等级,是否审核等)...
- AI公开课:18.05.16 周明博士(MSRA副院长)—北大AI第十一讲之《语言智能的进展》课堂笔记——你了解语言智能
- wxWidgets:wxMultiChoiceDialog类用法
- java学习(129):hashmap的方法
- python使用print不换行
- Android 系统(183)---如何远端调试framework和APK?
- Clumsy Keke 三维数组模拟
- louvain算法python_一种基于Louvain算法的社区发现方法及系统与流程
- UI自动化测试潮流代表工具—testsigma 快速入门
- [Android稳定性] Android Fd Leak问题分析方法
- [AAM-GCN Neurocomputing2021] Attention adjacency matrix based graph convolutional networks for skele
- Python自动化修改word实例
- grpc 源码阅读之 balancer
- Linux入门怎么学?262页linux学习笔记,零基础也能轻松入门
- 创建glance镜像报错HTTP503
- python国内外研究现状-对当今Python 快速发展的研究与展望
- 格式化GridView 数字0和1转换为男女 及更复杂的处理
- 说话就是生产力-孙路弘讲课笔记
- java程序员拜年代码_程序员的新年祝福是什么样的?
- Liunx运维整理文案-网络管理命令大全