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

先看下截图:

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. js文件中调用另一个js文件:

    document.write("<script language='javascript' src='/UEditor/uparse.js'></script") ...

  2. Oracle集合操作函数:union、intersect、minus

    [转]Oracle集合操作函数:union.intersect.minus 集合操作符专门用于合并多条select 语句的结果,包括:UNION, UNION ALL, INTERSECT, MINU ...

  3. ROS服务的理解

    服务是节点之间通信的另一种方式,服务允许节点发起一个请求和接收一个响应. 打开终端在里面输入: roscore 查看当前的运行节点: rosnode list 返回结果: /rosout 查看当前的运 ...

  4. 关于Google指令(别提baidu)

    关于google指令 关于google指令 google为我们准备好了的"指令"(directive),可以最大限度帮助我们完成每一次搜索.这些指令其实就是一个个关键字,能让我们从 ...

  5. linux使用wget纯命令下载JDK的方法(凑字数)

    linux使用wget纯命令下载JDK的方法 linux使用wget纯命令下载JDK的方法 Oracle官网上下载jdk,需要点击accept licence的才能下载,所以一般的直接使用wget下载 ...

  6. java面向对象之 类和对象

    OOP:Object Oriented Programming(面向对象编程) 面向对象: 1:将复杂的事情简单化. 2:面向对象将以前的过程中的执行者,变成了指挥者. 3:面向对象这种思想是符合现在 ...

  7. Noip2013调试技巧

    关于调试技巧,个人觉得还是很重要的,于是把自己之前写过的总结拿出来,修修补补再复习一下. F7 单步跟踪法 这是大家都最常用的调试方法,可以一步一步去跟踪程序的运行方向,以及各种变量的变化情况,当发现 ...

  8. Please ensure that adb is correctly located at '...adb.exe' and can be executed.

    Android Launch! The connection to adb is down, and a severe error has occured. You must restart adb ...

  9. Android Animation学习(一) Property Animation介绍

    Android Animation Android framework提供了两种动画系统: property animation (introduced in Android 3.0)和view an ...

  10. HDU 2149-Public Sale(巴什博奕)

    Public Sale Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit  ...