Android项目实战手册介绍
1 迷途奔跑的猪
1.1 功能概述
1.2 关键技术
1.3 实现过程
1.3.1 准备资源
1.3.2 布局页面
1.3.3 实现代码
1.4 运行项目
1.5 源代码下载
1.6 本章小结
2 仿微信系统
2.1 微信系统基础
2.2 实现过程
2.2.1 启动界面
2.2.2 系统导航界面
2.2.3 系统登录界面
2.2.4 发送信息界面
2.2.5 “摇一摇”界面
2.3 源码下载
3 天气预报
3.1 概述
3.2 关键代码
3.2.1 主界面布局文件
3.2.2 程序主界面
3.2.3 调用Web Service辅助类
3.2.4 显示天气实况信息的布局文件
3.2.5 布局中涉及的样式信息
3.2.6 显示天气实况信息的页面
3.2.7 显示未来天气信息的布局文件
3.2.8 每一项天气信息的布局文件
3.2.9 显示未来五天天气信息的页面
3.2.10 显示天气趋势的页面布局文件
3.2.11 显示天气趋势图
3.2.12 自定义趋势图
3.2.13 选择城市页面布局文件
3.2.14 选择城市主程序
3.2.15 省份项的布局文件
3.2.16 自定义对话框对应的布局文件
3.2.17 按钮背景
3.2.18 天气带边框信息
3.2.19 自定义按下时图片
3.2.20 自定义正常时图片
3.2.21 工具类
3.3 代码分析
3.3.1 调用 Web Service
3.3.2 用 SharedPreference 保存用户信息
3.3.3 按两次返回键退出应用程序
3.4 知识扩展
3.5 思考与练习
3.6 源码下载
4 音乐播放器
4.1 项目简介
4.2 系统需求分析
4.2.1 构成模块
4.2.2 系统流程
4.2.3 功能结构图
4.2.4 系统功能说明
4.2.5 系统需求
4.3 数据库设计
4.3.1 字段设计
4.3.2 E-R图设计
4.3.3 数据库连接
4.3.4 创建数据库
4.3.5 操作数据库
4.3.6 数据显示
4.4 具体编码
4.4.1 设置服务信息
4.4.2 播放器主界面
4.4.3 播放列表功能
4.4.4 菜单功能模块
4.4.5 播放设置界面
4.4.6 设置显示歌词
4.4.7 文件浏览器模块
4.4.8 数据存储
4.5 源码下载
5 网上购物商城
5.1 概述
5.2 服务器端的开发
5.2.1 数据库设计
5.2.2 服务器端的简要介绍
5.2.3 服务器端的代码详细介绍
5.3 资源权限配置
5.4 手机客户端的架构介绍
5.5 客户端实体类代码实现
5.6 编码转换类的设计及实现
5.7 公共类的设计及实现
5.8 手机端请求服务器数据类的设计及实现
5.9 欢迎窗体类的设计及实现
5.10 应用主窗体类的设计及实现
5.11 推荐商品列表窗体类的设计及实现
5.12 商品详情信息窗体类的设计及实现
5.13 购物车列表窗体类的设计及实现
5.14 登录窗体类的设计及实现
5.15 提交订单窗体类的设计及实现
5.16 订单列表窗体类的设计及实现
5.17 项目总结
5.18 源码下载

程序主界面

2017-09-28 16:24:48
admin
569
最后编辑:admin 于 2017-09-28 16:54:45
WeatherForecast\src\ iet\jxufe\cn\android\ weatherforecast\MainActivity. java
package iet.jxufe.cn.android.weatherforecast;

import org.ksoap2.serialization.SoapObject;

import android.app.Activity;
import android.app.FragmentTransaction;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {
	public static SoapObject weatherObject;// 天气信息对象
	public static String province, city;// 获取保存的省份、城市信息
	private SharedPreferences mPreferences;// 获取参数信息
	private SharedPreferences.Editor mEditor;// 参数编辑器
	private TabHost weatherTab;// 选项卡
	private int count = 1;// 记录单击退出的次数
	private int currentTab = 1;// 当前的选项页,默认为1即第二项
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);// 去除标题栏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);// 全屏显示
		setContentView(R.layout.activity_main);
		mPreferences = getSharedPreferences("weather", Context.MODE_PRIVATE);// 获取参数信息
		province = mPreferences.getString("province", "江西");// 获取保存的省份信息
		city = mPreferences.getString("city", "南昌");// 获取保存的城市信息,默认为江西--南昌
		weatherTab = (TabHost) findViewById(R.id.mTabHost);// 获取选项卡
		weatherTab.setup();
		// 选项卡的初始化,添加三个简单选项
		weatherTab.addTab(weatherTab.newTabSpec("weatherTrend")
				.setIndicator("未来天气").setContent(R.id.realContent));
		weatherTab.addTab(weatherTab.newTabSpec("currentWeather")
				.setIndicator("天气实况").setContent(R.id.realContent));
		weatherTab.addTab(weatherTab.newTabSpec("trendChart")
				.setIndicator("天气趋势图").setContent(R.id.realContent));
		getWeatherInfo(city);// 调用方法,获取天气信息
	}
	private Handler mHandler = new Handler() {// 创建Handler对象发送、接收、处理消息
		public void handleMessage(Message msg) {
			if (msg.what == 0x11) {
				if (weatherObject != null) {// 判断天气信息是否为空,不为空显示信息
					weatherTab.setOnTabChangedListener(new MyTabListener());
					weatherTab.setCurrentTab((currentTab + 1) % 3);// 切换当前页面
					weatherTab.setCurrentTab((currentTab + 3 - 1) % 3);// 恢复当前页面
				} else {// 如果未能获取到天气信息,则提示用户查看网络状态
					Toast.makeText(MainActivity.this, "无法获取天气信息,请检查网络状态!",
							Toast.LENGTH_SHORT).show();
				}
			}
		}
	};
	public void getWeatherInfo(final String city) {// 启动一个线程,向WebService发送请求,获取天气信息
		new Thread() {// 创建线程
			public void run() {
				weatherObject = WebServiceUtil.getWeatherByCity(city);// 调用辅助类的方法,根据城市获取信息
				mHandler.sendEmptyMessage(0x11);// 获取到信息后发送消息
			}
		}.start();// 启动线程
	}
	private class MyTabListener implements OnTabChangeListener {// 页面监听器
		public void onTabChanged(String tabTag) {// TabHost中页面切换时调用该方法
			currentTab = weatherTab.getCurrentTab();// 保存当前页面序号
			FragmentTransaction fTransaction = getFragmentManager()
					.beginTransaction();// 启动事务,判断当前用户切换到哪个页面
			if (tabTag.equalsIgnoreCase("currentWeather")) {// 天气实况页面,加载相关信息
				fTransaction.replace(R.id.realContent,
						new WeatherInfoFragment());
			} else if (tabTag.equals("weatherTrend")) {// 未来天气,未来五天天气信息
				fTransaction.replace(R.id.realContent,
						new WeatherListFragment());
			} else if (tabTag.equalsIgnoreCase("trendChart")) {// 天气趋势图,绘制天气趋势
				fTransaction.replace(R.id.realContent,
						new WeatherTrendFragment());
			}
			fTransaction.commit();// 提交事务
		}
	}
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {// 获取用户选择的城市
		if (requestCode == 0 && resultCode == 0) {
			if (data != null) {// 如果返回的数据不为空
				city = data.getStringExtra("city");// 获取城市
				province = data.getStringExtra("province");// 获取省份信息
				mEditor = mPreferences.edit();// 得到参数编辑器
				mEditor.putString("city", city);// 保存变化的城市信息
				mEditor.putString("province", province);// 保存变化的省份信息
				mEditor.commit();// 提交变化
				refresh(null);// 刷新页面
			}
		}
	}
	public void exit(View view) {// 退出按钮事件处理,连续按两次退出应用
		if (count < 2) {// 如果是第一次,则提示用户再按一次
			Toast.makeText(this, "再按一次退出天气预报", Toast.LENGTH_SHORT).show();
			count++;
			new Thread() {// 创建线程用于计时,3秒后恢复原状
				public void run() {
					try {
						sleep(3000);// 3秒以后恢复为原值
						count = 1;
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}.start();
		} else {// 如果连按两次,则退出
			this.finish();
		}
	}
	public void refresh(View view) {// 刷新按钮事件处理,重新获取天气信息
		getWeatherInfo(city);
	}
	public void changeCity(View view) {// 切换城市按钮事件处理,跳转到选择城市页面
		Intent intent = new Intent(this, ChooseCityActivity.class);
		startActivityForResult(intent, 0);
	}
	public boolean onKeyDown(int keyCode, KeyEvent event) {//按返回键的事件处理
		if (keyCode == KeyEvent.KEYCODE_BACK) {			
			exit(null);
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}
}

  • 在线客服
  • 关注微信
  • 联系电话
    • 欢迎咨询
    • 欢迎加入QQ群 303257430
  • 公众号:源宝网络
    • 联系电话及微信号 18902328227