现在的位置: 首页 > 综合 > 正文

指尖上的Android之实战篇(四)

2013年11月14日 ⁄ 综合 ⁄ 共 6736字 ⁄ 字号 评论关闭

希望童鞋可以看一下我关于服务器端的一些说明:指尖的Android之实战篇--说明篇(二)

接下来,就开发我们的客户端开发之旅吧

首先关于图片资源,可以到我的相册中下载:相册名Auction

一、用户登录:

这个功能分两篇博客

1.布局:login.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/bg"
  android:stretchColumns="1"
  >
  
  <ImageView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:scaleType="fitCenter"
  android:src="@drawable/logo"
  />
  <TextView
  android:id="@+id/TextView"
  android:text="@string/welcome"
  android:textSize="@dimen/label_font_size"
  android:textColor="@color/white" 
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:gravity="center_horizontal"
  android:padding="@dimen/title_padding"
  />
  <!-- 输入用户名 -->
  <TableRow>
  <TextView
  android:text="@string/uesr_name"
  android:textColor="@color/white" 
  android:id="@+id/TextView"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textSize="@dimen/label_font_size"
  />
  <EditText
  android:text=""
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:id="@+id/userEditText"  
  />
  </TableRow>
  <!-- 输入密码行 -->
  <TableRow>
  <TextView
  android:text="@string/user_pass"
  android:textColor="@color/white" 
  android:id="@+id/TextView"
  android:textSize="@dimen/label_font_size"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  />
  <EditText
  android:text=""
  android:id="@+id/pwdEditText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:password="true"
  />
  </TableRow>
  <!-- 定义登录、取消按钮的行 -->
  <LinearLayout
  android:orientation="horizontal"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:gravity="center"
  >
  <Button
  android:id="@+id/bnLogin"
  android:text="@string/login"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  />
  <Button
  android:text="@string/cancel"
  android:id="@+id/bnCancel"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"  
  />
  </LinearLayout>
</TableLayout>

 

2用到的字符串stings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, Login!</string>
    <string name="app_name">AuctionClient</string>
    <string name="welcome"> 欢迎使用591拍卖系统</string>
    <string name="uesr_name">用户账号:</string>
    <string name="user_pass">用户密码:</string>
    <string name="login">登录</string>
    <string name="cancel">取消</string>
    <string name="add">添加</string>
    <string name="bid">竞价</string>
    <string name="view_succ">浏览竟得物品</string>
    <string name="view_bid">您参与竞标的物品</string>
    <string name="view_fial">浏览流拍的物品</string>
    <string name="manage_item">您当前的拍卖的物品</string>
    <string name="manage_kind">系统的所有的物品种类</string>
    <string name="choose_kind">请选择一个物品种类</string>
    <string name="item_list">当前种类的物品</string>
    <string name="item_name">物品名:</string>
    <string name="item_kind">物品种类:</string>
	<string name="item_desc">物品描述:</string>
	<string name="win_price">赢取价格:</string>
	<string name="max_price">最高竞价:</string>
	<string name="remark">物品备注:</string>
	<string name="init_price">起拍价格:</string>
	<string name="avail_time">有效时间:</string>
	<string name="end_time">结束时间:</string>
	<string name="bid_price">竞标价格:</string>
	<string name="bid_time">竞标时间:</string>
	<string name="bid_user">竞标人:</string>
	<string name="add_kind_title">添加物品种类</string>
	<string name="add_item_title">添加拍卖物品</string>
	<string name="kind_name">种类名称:</string>
	<string name="kind_desc">种类描述:</string>
	<string name="item_detail_title">物品详情</string>
	<string name="you_bid">您的竞价:</string>
    
    
</resources>

3. arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string-array name="menu">
		<item>查看竞得物品</item>
		<item>浏览流拍物品</item>
		<item>管理物品种类</item>
		<item>管理物品</item>
		<item>浏览拍卖物品</item>
		<item>查看自己的竞标</item>
	</string-array>

	<string-array name="availTime">
		<item>一天</item>
		<item>二天</item>
		<item>三天</item>
		<item>四天</item>
		<item>五天</item>
		<item>一个星期</item>
		<item>一个月</item>
	</string-array>	
</resources>

4.colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<color name="white">#FFFFFFFF</color>
	<color name="transparency">#00000000</color>
	<color name="title_bg">#FF9ed913</color>
	<color name="end_color">#A0cfef83</color>
	<color name="grey">#bbb</color>
</resources>

5.dimens.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<dimen name="label_font_size">20dip</dimen>
	<dimen name="title_padding">30px</dimen>
	<dimen name="sub_title_margin">20px</dimen>
</resources>

 

5 用户登录的Activity:Login.java 

package com.infy.auction.client;

import java.util.HashMap;
import java.util.Map;

import org.json.JSONObject;

import com.infy.auction.client.util.DialogUtil;
import com.infy.auction.client.util.HttpUtil;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Login extends Activity {
	private static final String TAG = "Login";

	// 定义界面中的两个文本框
	EditText etName;
	EditText etPass;
	// 定义界面中的两个按钮
	Button bnLogin;
	Button bnCancel;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);

		// 获取界面中的两个编辑文本框
		etName = (EditText) findViewById(R.id.userEditText);
		etPass = (EditText) findViewById(R.id.pwdEditText);

		// 获得界面中的两个按钮
		bnLogin = (Button) findViewById(R.id.bnLogin);
		bnCancel = (Button) findViewById(R.id.bnCancel);

		// 为bnCancal按钮的单击事件绑定监听器
		 bnCancel.setOnClickListener((OnClickListener) new FinishListener(this));

		bnLogin.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub

				// 进行输入检验
				if (validate()) {
					// 如果登录成功
					if (loginPro()) {
						Intent intent = new Intent(Login.this, Main.class);
						startActivity(intent);
						// 结束该Activity
						finish();
					}
				}

			}
		});
	}

	// 定义内部类
	private class FinishListener {
		public FinishListener(Login login) {
			// TODO Auto-generated constructor stub
			etName.setText("");
			etPass.setText("");
		}

	}

	// 登录验证
	public boolean loginPro() {
		// 获取用户名和密码
		String username = etName.getText().toString().trim();
		String pwd = etPass.getText().toString().trim();

		JSONObject jsonObj;

		try {
			Log.i(TAG, "Login---");
			jsonObj = query(username, pwd);

			Log.i(TAG, "Login--->" + jsonObj.getString("userId"));
			// 如果userid大于0
			if (jsonObj.getInt("userId") > 0) {

				return true;
			}

		} catch (Exception e) {
			DialogUtil.showDialog(this, "服务器响应异常,请稍后再试", false);
			e.printStackTrace();
		}

		return false;
	}

	// 对用户名、密码进行检验
	private boolean validate() {
		String username = etName.getText().toString().trim();
		if (username.equals("")) {
			DialogUtil.showDialog(this, "用户账户是必填项", false);
			return false;

		}

		String pwd = etPass.getText().toString().trim();

		if (pwd.equals("")) {
			DialogUtil.showDialog(this, "用户密码不能为空!", false);
			return false;
		}
		return true;
	}

	// 定义发送请求的方法
	private JSONObject query(String username, String password) throws Exception {
		// 使用MAP封装请求参数
		Map<String, String> map = new HashMap<String, String>();
		map.put("user", username);
		map.put("pass", password);
		// 定义发送请求的URL、
		String url = HttpUtil.BASE_URL + "servlet/LoginServlet";
		// 发送请求
		return new JSONObject(HttpUtil.postRequest(url, map));
	}
}

 

最后,给出登录的效果图:

 

抱歉!评论已关闭.