引导页面,多个城市的天气,可以通过滑动来翻阅。

先看下截图:

1、城市天气界面

2、引导界面

应用引导页面

package org.qxj.iweather.page;

import org.qxj.iweather.R;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ViewFlipper; public class Welcome extends Activity { private static final String TAG = "Welcome";
private SharedPreferences shared = null;
private SharedPreferences.Editor edit = null;
private LinearLayout layout = null;
private ViewFlipper flip = null;
private LayoutParams match = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
private String isFirst = "false";
private Intent intent = null; class TurnPage implements Runnable { @Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(5000);
TurnToMain();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.shared = super.getSharedPreferences("IWeather", MODE_PRIVATE);
this.edit = this.shared.edit(); this.layout = new LinearLayout(this);
this.layout.setOrientation(LinearLayout.VERTICAL); this.flip = new ViewFlipper(this);
this.layout.addView(this.flip, match);
this.layout.setBackgroundResource(R.drawable.welcome);
super.addContentView(this.layout, match); isFirst = this.shared.getString("isFirst", "true");
Log.i(TAG, "isFirst: " + isFirst);
if ("true".equals(isFirst)) {
this.edit.putString("isFirst", "false");
this.edit.commit();
new Thread(new TurnPage()).start();
} else {
// 进行跳转
TurnToMain();
} } public void TurnToMain() {
// 进行跳转
intent = new Intent(Welcome.this, Main.class);
startActivity(intent);
// 销毁该Activity,返回的时候,不会返回该界面。
this.finish();
} }

主页面

package org.qxj.iweather.page;

import org.qxj.iweather.R;
import org.qxj.iweather.Contents.IWeather;
import org.qxj.iweather.net.HttpHelper; import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.LinearLayout; public class Main extends Activity implements OnGestureListener { private IWeather iWeather = null;
private LinearLayout layout = null;
private GestureDetector detector;
private LayoutParams match = new LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT); @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.layout = new LinearLayout(this);
detector = new GestureDetector(this);
this.iWeather = new IWeather(this);
this.layout.addView(this.iWeather.flip, match);
this.addContentView(this.layout, match);
iWeather.flip.addView(new PageLayout(this, "101301301"));
iWeather.flip.addView(new PageLayout(this, "101010100"));
iWeather.flip.addView(new PageLayout(this, "101260101"));
iWeather.flip.addView(new PageLayout(this, "101190501"));
iWeather.flip.addView(new PageLayout(this, "101190101"));
iWeather.flip.addView(new PageLayout(this, "101170101"));
} @Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
} @Override
public boolean onDown(MotionEvent arg0) {
// TODO Auto-generated method stub
return false;
} @Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
// TODO Auto-generated method stub
if (e1.getX() - e2.getX() > 80) {
iWeather.flip.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_in));
iWeather.flip.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_out));
iWeather.flip.showNext();
return true;
} else if (e1.getX() - e2.getX() < -80) {
iWeather.flip.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_in));
iWeather.flip.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_out));
iWeather.flip.showPrevious();
return true;
}
return false;
} @Override
public void onLongPress(MotionEvent arg0) {
// TODO Auto-generated method stub } @Override
public boolean onScroll(MotionEvent arg0, MotionEvent arg1, float arg2,
float arg3) {
// TODO Auto-generated method stub
return false;
} @Override
public void onShowPress(MotionEvent arg0) {
// TODO Auto-generated method stub } @Override
public boolean onSingleTapUp(MotionEvent arg0) {
// TODO Auto-generated method stub
return false;
} }

自定义的pageLayout

package org.qxj.iweather.page;

import org.qxj.iweather.R;
import org.qxj.iweather.model.Weather;
import org.qxj.iweather.net.HttpHelper; import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast; public class PageLayout extends LinearLayout { private Weather weather = null;
private Context context = null;
private TextView temperature = null;
private TextView city = null;
private TextView statues = null;
private TextView date = null;
public Handler hander = new Handler() { @Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what) {
case 1:
weather = (Weather) msg.obj;
init();
break;
case 0:
Toast.makeText(context, "数据操作失败!", Toast.LENGTH_SHORT).show();
break;
}
} }; public PageLayout(Context context, String city) {
super(context);
this.context = context;
new Thread(new HttpHelper(city, this)).start();
} public PageLayout(Context context, AttributeSet attrs, String city) {
super(context, attrs);
this.context = context;
new Thread(new HttpHelper(city, this)).start();
} public PageLayout(Context context, AttributeSet attrs, int defStyle, String city) {
super(context, attrs, defStyle);
this.context = context;
new Thread(new HttpHelper(city, this)).start();
} private void init() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.page_layout, this);
this.temperature = (TextView) findViewById(R.id.tempearture);
this.city = (TextView) findViewById(R.id.city);
this.statues = (TextView) findViewById(R.id.statues);
this.date = (TextView) findViewById(R.id.date); this.temperature.setText(this.weather.getTemp1());
this.city.setText(this.weather.getCity());
this.statues.setText(this.weather.getWeather1());
this.date.setText(this.weather.getDate_y());
this.setBackgroundByWeather(this.weather.getWeather1());
} /**
* 设置屏幕背景
*/
private void setBackgroundByWeather(String w) {
if (w.indexOf("雪") != -1) {
// 有雪的天气
this.setBackgroundResource(R.drawable.snow);
} else if (w.indexOf("雨") != -1) {
// 下雨天
this.setBackgroundResource(R.drawable.rain);
} else if (w.indexOf("晴") != -1) {
// 晴
this.setBackgroundResource(R.drawable.sun);
} else if (w.indexOf("阴") != -1) {
// 阴天
this.setBackgroundResource(R.drawable.water);
} else {
this.setBackgroundResource(R.drawable.sun);
}
} }

完整代码:

http://download.csdn.net/detail/niitqin/6472535

Android 实现简单天气应用的更多相关文章

  1. Android 实现简单音乐播放器(二)

    在Android 实现简单音乐播放器(一)中,我介绍了MusicPlayer的页面设计. 现在,我简单总结一些功能实现过程中的要点和有趣的细节,结合MainActivity.java代码进行说明(写出 ...

  2. Android 实现简单音乐播放器(一)

    今天掐指一算,学习Android长达近两个月了,今天开始,对过去一段时间的学习收获以及遇到的疑难杂症做一些总结. 简单音乐播放器是我自己完成的第一个功能较为完整的APP,可以说是我的Android学习 ...

  3. Android课程---Android Studio简单设置

    Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings-->Appearance-->Theme, ...

  4. Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer) 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个简单的音乐播放器,要求功能 ...

  5. Android实现简单拨号器

    Android实现简单拨号器 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 代码实现 界面布局只有GridLayout和EditText两个控件,全部 ...

  6. 【转】Android Studio简单设置

    原文网址:http://ask.android-studio.org/?/article/14 Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以 ...

  7. Android发展简单介绍

    Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...

  8. android JNI 简单demo(2)它JNI demo 写

    android JNI 简单demo(2)它JNI demo 写 一.搭建Cygwin 环境:http://blog.csdn.net/androidolblog/article/details/25 ...

  9. Android Studio简单设置(转)

    Android Studio 简单设置 界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Th ...

随机推荐

  1. Java DecimalFormat 格式化数字

    我们经常要将数字进行格式化,比如取2位小数,这是最常见的.Java 提供 DecimalFormat 类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text. ...

  2. 去掉xcode编译warning:ld: warning: directory not found for option '

    tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; text-align:left ...

  3. android中ScrollView和GridView/ListView共存时,ScrollView不在顶部的解决方法

    listView.setFocusable(false); gridView.setFocusable(false); 这个必须在代码中写,xml文件中设置不起作用 原文:http://stackov ...

  4. Django一对多,多对多操作

    简要说明 Django里面的数据库操作O2O&M2M,一般归属于models管理 使用场景 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了).//两个表的 ...

  5. 初识C(1)----与C基本无关的开篇

    1.啥叫编程 编程乃编写程序的简称,所以要想知道啥叫编程,首先要清楚什么是程序(Program). 普及一点计算机小知识:从根本上说,计算机是由数字电路组成的运算机器,处理的数字也仅限于0和1组成的数 ...

  6. Unix/Linux笔记全集

    1:Unix/Linux操作系统概述 要求:理解应用软件和操作系统的区别,掌握系统的Kernel(核心)和shell(外壳)之间的关系以及各自的作用 Solaris:Solaris 是Sun Micr ...

  7. Office 2013

    Microsoft Office 2013 Professional Plus 32位简体中文版文件名: SW_DVD5_Office_Professional_Plus_2013_W32_ChnSi ...

  8. QReadWriteLock上锁容忍的等待时间是多久?

    非递归上锁情况下,同一个锁,已经被锁过一次,那么另外一个线程尝试上锁,会被挡在外面,但是会被挡多久呢?挡一分钟会被崩溃,还十分钟,还是永久等待而不崩溃(希望如此)?还是会立刻崩溃?因为不可以重复上锁. ...

  9. 使用netty构建一个socks proxy

    使用netty构建一个socks proxy   最近在做的项目,需要自己搭建一个socks代理.netty4.0附带了一个socks代理的样例,但是3.x就没有这个东西了,碰巧使用的又是3.7,就只 ...

  10. Jsoup代码解读之一-概述

    Jsoup代码解读之一-概述 今天看到一个用python写的抽取正文的东东,美滋滋的用Java实现了一番,放到了webmagic里,然后发现Jsoup里已经有了…觉得自己各种不靠谱啊!算了,静下心来学 ...