Android 实现简单天气应用
2013-10-29 20:41 waddell 阅读(700) 评论(0) 编辑 收藏 举报引导页面,多个城市的天气,可以通过滑动来翻阅。
先看下截图:
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