附录以及部分源代码

来源:互联网 发布:波士顿矩阵图,何种业务 编辑:程序博客网 时间:2024/05/21 15:54

主界面代码及抽屉界面代码:

package com.gemptc.fashionrecipe.zhuye.main;

import java.util.ArrayList;

import java.util.HashMap;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.content.Intent;

import android.net.Uri;

import android.os.AsyncTask;

import android.os.Bundle;

import android.os.Environment;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.view.GestureDetector;

import android.view.KeyEvent;

import android.view.LayoutInflater;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.view.ViewGroup;

import android.view.ViewTreeObserver;

import android.view.ViewTreeObserver.OnPreDrawListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ImageButton;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.RadioGroup;

import android.widget.RelativeLayout;

import android.widget.SimpleAdapter;

import android.widget.TabHost;

import android.widget.TabHost.TabSpec;

import com.gemptc.fashionrecipe.R;

import com.gemptc.fashionrecipe.dao.CacheDataHelper;

import com.gemptc.fashionrecipe.daohang.CollectFragment;

import com.gemptc.fashionrecipe.daohang.UploadFragment;

import com.gemptc.fashionrecipe.daohang.UserFragment;

import com.gemptc.fashionrecipe.more.CaptureActivity;

import com.gemptc.fashionrecipe.more.MoreAbout;

import com.gemptc.fashionrecipe.more.MoreCheckUpdate;

import com.gemptc.fashionrecipe.more.MoreSet;

import com.gemptc.fashionrecipe.more.MoreUploadPhoto;

import com.gemptc.fashionrecipe.more.MoreYiJianFanKui;

import com.gemptc.fashionrecipe.zhuye.layout.MyLinearLayout;

import com.gemptc.fashionrecipe.zhuye.layout.MyLinearLayout.OnScrollListener;

 

public class MainActivity extends FragmentActivity implements OnTouchListener,

GestureDetector.OnGestureListener, OnItemClickListener,

android.widget.RadioGroup.OnCheckedChangeListener {

 

// 由于Activity中抢占了OnTouch事件,那么设置触摸事件可以在主activity中设置一个接口如下(自定义接口)

private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MyOnTouchListener>(

10);

 

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

for (MyOnTouchListener listener : onTouchListeners) {

listener.onTouch(ev);

}

return super.dispatchTouchEvent(ev);

}

 

public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {

onTouchListeners.add(myOnTouchListener);

}

 

public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {

onTouchListeners.remove(myOnTouchListener);

}

 

public interface MyOnTouchListener {

public boolean onTouch(MotionEvent ev);

}

 

private RadioGroup group;

private TabHost tabHost;

 

private String navigation_bar_home = "home";

private String navigation_bar_user = "user";

private String navigation_bar_search = "search";

private String navigation_bar_upload = "upload";

private String navigation_bar_collect = "collect";

private boolean hasMeasured = false;// 是否Measured.

private LinearLayout layout_left;// 左边布局

private LinearLayout layout_right;// 右边布局

private ImageButton iv_set;// 图片

private ListView lv_set;// 设置菜单

 

/** 每次自动展开/收缩的范围 */

private int MAX_WIDTH = 0;

/** 每次自动展开/收缩的速度 */

private final static int SPEED = 30;

 

private final static int sleep_time = 5;

 

private GestureDetector mGestureDetector;// 手势

private boolean isScrolling = false;

private float mScrollX; // 滑块滑动距离

private int window_width;// 屏幕的宽度

 

// private String TAG = "jj";

 

private View view = null;// 点击的view

 

private String title[] = { "系统设置", "扫一扫", "意见反馈", "帮助中心", "检查更新", "我的资料",

"关于" };

 

private MyLinearLayout mylaout;

private boolean mKeepListenFlag;

 

@SuppressWarnings("static-access")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// sd card 可用

if (Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED)) {

// 创建数据库

new CacheDataHelper(this).openDatabase().close();

} else {

// sd card当前不可用

new AlertDialog.Builder(this)

.setTitle("确认")

.setMessage("本程序需SD,请确认SD卡是否正常")

.setPositiveButton("确定",

new DialogInterface.OnClickListener() {

public void onClick(

DialogInterface dialoginterface, int i) {

// 按钮事件

finish();

}

}).show();

 

return;

}

setContentView(R.layout.main);

init();

setNavigationBar();

 

}

private void init() {

group = (RadioGroup) findViewById(R.id.bottom_group);

tabHost = (TabHost) findViewById(android.R.id.tabhost);

group.setOnCheckedChangeListener(this);

// findViewById(R.id.home_more_btn).setOnClickListener(this);

tabHost.setup();

LayoutInflater.from(MainActivity.this).inflate(R.layout.home, null,

true);

layout_left = (LinearLayout) findViewById(R.id.layout_left);

layout_right = (LinearLayout) findViewById(R.id.layout_right);

iv_set = (ImageButton) findViewById(R.id.home_more_btn);

lv_set = (ListView) findViewById(R.id.lv_set);

mylaout = (MyLinearLayout) findViewById(R.id.mylaout);

// lv_set.setAdapter(new ArrayAdapter<String>(this, R.layout.item,

// R.id.tv_item, title));

/***

 * 实现该接口

 */

ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();

HashMap<String, Object> map0 = new HashMap<String, Object>();

map0.put("icon", R.drawable.icon_shezhi);

map0.put("affair", "系统设置");

listItem.add(map0);

HashMap<String, Object> map1 = new HashMap<String, Object>();

map1.put("icon", R.drawable.icon_saoyisao);

map1.put("affair", "扫一扫");

listItem.add(map1);

HashMap<String, Object> map2 = new HashMap<String, Object>();

map2.put("icon", R.drawable.icon_yijianfankui);

map2.put("affair", "意见反馈");

listItem.add(map2);

HashMap<String, Object> map3 = new HashMap<String, Object>();

map3.put("icon", R.drawable.icon_bangzhu);

map3.put("affair", "帮助中心");

listItem.add(map3);

HashMap<String, Object> map4 = new HashMap<String, Object>();

map4.put("icon", R.drawable.icon_shuaxin);

map4.put("affair", "检查更新");

listItem.add(map4);

HashMap<String, Object> map5 = new HashMap<String, Object>();

map5.put("icon", R.drawable.icon_guanyu);

map5.put("affair", "上传菜谱");

listItem.add(map5);

HashMap<String, Object> map6 = new HashMap<String, Object>();

map6.put("icon", R.drawable.icon_guanyu);

map6.put("affair", "关于");

listItem.add(map6);

SimpleAdapter listItemAdapter = new SimpleAdapter(MainActivity.this,

listItem, R.layout.item, new String[] { "icon", "affair" },

new int[] { R.id.ItemImage, R.id.tv_item });

SimpleAdapter listItemAdapter1 = new SimpleAdapter(MainActivity.this,

listItem, R.layout.item, new String[] { "icon", "affair" },

new int[] { R.id.ItemImage, R.id.tv_item });

lv_set.setAdapter(listItemAdapter1);

mylaout.setOnScrollListener(new OnScrollListener() {

@Override

public void doScroll(float distanceX) {

doScrolling(distanceX);

}

 

@Override

public void doLoosen() {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

// Log.e("jj", "layoutParams.leftMargin="

// + layoutParams.leftMargin);

// 缩回去

if (layoutParams.leftMargin < -window_width / 2) {

new AsynMove().execute(-SPEED);

} else {

new AsynMove().execute(SPEED);

}

}

});

 

// 点击监听

lv_set.setOnItemClickListener(this);

lv_set.setCacheColorHint(0);

layout_right.setOnTouchListener(this);

// layout_left.setOnTouchListener(this);

iv_set.setOnTouchListener(this);

mGestureDetector = new GestureDetector(this);

// 禁用长按监听

mGestureDetector.setIsLongpressEnabled(false);

getMAX_WIDTH();

 

}

private void setNavigationBar() {

TabSpec tab_home = tabHost.newTabSpec(navigation_bar_home);

TabSpec tab_user = tabHost.newTabSpec(navigation_bar_user);

TabSpec tab_search = tabHost.newTabSpec(navigation_bar_search);

TabSpec tab_menu = tabHost.newTabSpec(navigation_bar_upload);

TabSpec tab_share = tabHost.newTabSpec(navigation_bar_collect);

 

tab_home.setIndicator(navigation_bar_home).setContent(

R.id.fragment_home);

tab_user.setIndicator(navigation_bar_home).setContent(

R.id.fragment_user);

tab_search.setIndicator(navigation_bar_home).setContent(

R.id.fragment_search);

tab_menu.setIndicator(navigation_bar_home).setContent(

R.id.fragment_upload);

tab_share.setIndicator(navigation_bar_home).setContent(

R.id.fragment_collect);

 

tabHost.addTab(tab_home);

tabHost.addTab(tab_search);

tabHost.addTab(tab_menu);

tabHost.addTab(tab_user);

tabHost.addTab(tab_share);

}

 

public void onCheckedChanged(RadioGroup group, int checkedId) {

switch (checkedId) {

case R.id.radio_home:

tabHost.setCurrentTabByTag(navigation_bar_home);

break;

case R.id.radio_user:

tabHost.setCurrentTabByTag(navigation_bar_user);

Fragment currentFragment = getSupportFragmentManager()

.findFragmentById(R.id.fragment_upload);

if (currentFragment instanceof UserFragment) {

((UserFragment) currentFragment).hideLogin();

}

break;

case R.id.radio_search:

tabHost.setCurrentTabByTag(navigation_bar_search);

break;

case R.id.radio_upload:

tabHost.setCurrentTabByTag(navigation_bar_upload);

break;

case R.id.radio_collect:

// Intent intent=new

// Intent(MainActivity.this,ShoucangActivity.class);

// startActivity(intent);

 

Fragment currentFragment1 = getSupportFragmentManager()

.findFragmentById(R.id.fragment_collect);

if (currentFragment1 instanceof CollectFragment) {

((CollectFragment) currentFragment1).refreshMyFavor();

}

 

tabHost.setCurrentTabByTag(navigation_bar_collect);

 

break;

}

if (checkedId == R.id.radio_upload) {

Fragment currentFragment = getSupportFragmentManager()

.findFragmentById(R.id.fragment_upload);

if (currentFragment instanceof UploadFragment) {

((UploadFragment) currentFragment).start();

}

}

}

 

private void dialog() {

// TODO Auto-generated method stub

Builder dialog = new Builder(MainActivity.this);

dialog.setMessage("确定要退出吗?");

dialog.setTitle("退出");

dialog.setPositiveButton("确定",

new android.content.DialogInterface.OnClickListener() {

 

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

MainActivity.this.finish();

overridePendingTransition(R.anim.push_right_in,

R.anim.push_right_out);

}

});

dialog.setNegativeButton("取消",

new android.content.DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

});

dialog.create().show();

}

 

void doScrolling(float distanceX) {

isScrolling = true;

mScrollX += distanceX;// distanceX:向左为正,右为负

 

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

RelativeLayout.LayoutParams layoutParams_1 = (RelativeLayout.LayoutParams) layout_right

.getLayoutParams();

layoutParams.leftMargin -= mScrollX;

layoutParams_1.leftMargin = window_width + layoutParams.leftMargin;

if (layoutParams.leftMargin >= 0) {

isScrolling = false;// 拖过头了不需要再执行AsynMove

layoutParams.leftMargin = 0;

layoutParams_1.leftMargin = window_width;

 

} else if (layoutParams.leftMargin <= -MAX_WIDTH) {

// 拖过头了不需要再执行AsynMove

isScrolling = false;

layoutParams.leftMargin = -MAX_WIDTH;

layoutParams_1.leftMargin = window_width - MAX_WIDTH;

}

// Log.v(TAG, "layoutParams.leftMargin=" + layoutParams.leftMargin

// + ",layoutParams_1.leftMargin =" + layoutParams_1.leftMargin);

 

layout_left.setLayoutParams(layoutParams);

layout_right.setLayoutParams(layoutParams_1);

}

 

/***

 * 获取移动距离 移动的距离其实就是layout_left的宽度

 */

void getMAX_WIDTH() {

ViewTreeObserver viewTreeObserver = layout_left.getViewTreeObserver();

// 获取控件宽度

viewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {

@Override

public boolean onPreDraw() {

if (!hasMeasured) {

window_width = getWindowManager().getDefaultDisplay()

.getWidth();

MAX_WIDTH = layout_right.getWidth();

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

RelativeLayout.LayoutParams layoutParams_1 = (RelativeLayout.LayoutParams) layout_right

.getLayoutParams();

ViewGroup.LayoutParams layoutParams_2 = mylaout

.getLayoutParams();

// 注意: 设置layout_left的宽度。防止被在移动的时候控件被挤压

layoutParams.width = window_width;

layout_left.setLayoutParams(layoutParams);

 

// 设置layout_right的初始位置.

layoutParams_1.leftMargin = window_width;

layout_right.setLayoutParams(layoutParams_1);

// 注意:设置lv_set的宽度防止被在移动的时候控件被挤压

layoutParams_2.width = MAX_WIDTH;

mylaout.setLayoutParams(layoutParams_2);

 

// Log.v(TAG, "MAX_WIDTH=" + MAX_WIDTH + "width="

// + window_width);

hasMeasured = true;

}

return true;

}

});

 

}

 

// 按返回键弹出对话框退出程序

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

 

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

if (layoutParams.leftMargin < 0) {

new AsynMove().execute(SPEED);

return false;

} else

dialog();

}

return super.onKeyDown(keyCode, event);

}

 

@Override

public boolean onTouch(View v, MotionEvent event) {

 

view = v;// 记录点击的控件

 

// 松开的时候要判断,如果不到半屏幕位子则缩回去,

if (MotionEvent.ACTION_UP == event.getAction() && isScrolling == true) {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

// 缩回去

if (layoutParams.leftMargin < -window_width / 2) {

new AsynMove().execute(-SPEED);

} else {

new AsynMove().execute(SPEED);

}

}

 

return mGestureDetector.onTouchEvent(event);

}

 

@Override

public boolean onDown(MotionEvent e) {

 

int position = lv_set.pointToPosition((int) e.getX(), (int) e.getY());

if (position != ListView.INVALID_POSITION) {

View child = lv_set.getChildAt(position

- lv_set.getFirstVisiblePosition());

if (child != null)

child.setPressed(true);

}

 

mScrollX = 0;

isScrolling = false;

// 将之改为true,才会传递给onSingleTapUp,不然事件不会向下传递.

return true;

}

 

@Override

public void onShowPress(MotionEvent e) {

 

}

 

/***

 * 点击松开执行

 */

@Override

public boolean onSingleTapUp(MotionEvent e) {

// 点击的不是layout_left

if (view != null && view == iv_set) {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

// 左移动

if (layoutParams.leftMargin >= 0) {

new AsynMove().execute(-SPEED);

lv_set.setSelection(0);// 设置为首位.

} else {

// 右移动

new AsynMove().execute(SPEED);

}

} else if (view != null && view == layout_left) {

RelativeLayout.LayoutParams layoutParams = (android.widget.RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

if (layoutParams.leftMargin < 0) {

// 说明layout_left处于移动最左端状态,这个时候如果点击layout_left应该直接所以原有状态.(更人性化)

// 右移动

new AsynMove().execute(SPEED);

}

}

 

return true;

}

 

/***

 * 滑动监听 就是一个点移动到另外一个点. distanceX=后面点x-前面点x,如果大于0,说明后面点在前面点的右边及向右滑动

 */

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

float distanceY) {

// 执行滑动.

doScrolling(distanceX);

return false;

}

 

@Override

public void onLongPress(MotionEvent e) {

 

}

 

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

float velocityY) {

return false;

}

 

class AsynMove extends AsyncTask<Integer, Integer, Void> {

 

@Override

protected Void doInBackground(Integer... params) {

int times = 0;

if (MAX_WIDTH % Math.abs(params[0]) == 0)// 整除

times = MAX_WIDTH / Math.abs(params[0]);

else

times = MAX_WIDTH / Math.abs(params[0]) + 1;// 有余数

 

for (int i = 0; i < times; i++) {

publishProgress(params[0]);

try {

Thread.sleep(sleep_time);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

 

return null;

}

 

/**

 * update UI

 */

@Override

protected void onProgressUpdate(Integer... values) {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

RelativeLayout.LayoutParams layoutParams_1 = (RelativeLayout.LayoutParams) layout_right

.getLayoutParams();

// 右移动

if (values[0] > 0) {

layoutParams.leftMargin = Math.min(layoutParams.leftMargin

+ values[0], 0);

layoutParams_1.leftMargin = Math.min(layoutParams_1.leftMargin

+ values[0], window_width);

// Log.v(TAG, "layout_left" + layoutParams.leftMargin

// + ",layout_right" + layoutParams_1.leftMargin);

} else {

// 左移动

layoutParams.leftMargin = Math.max(layoutParams.leftMargin

+ values[0], -MAX_WIDTH);

layoutParams_1.leftMargin = Math.max(layoutParams_1.leftMargin

+ values[0], window_width - MAX_WIDTH);

// Log.v(TAG, "layout_left" + layoutParams.leftMargin

// + ",layout_right" + layoutParams_1.leftMargin);

}

layout_right.setLayoutParams(layoutParams_1);

layout_left.setLayoutParams(layoutParams);

 

}

 

}

 

@Override

public void onItemClick(AdapterView<?> parent, View view, int position,

long id) {

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) layout_left

.getLayoutParams();

// 只要没有滑动则都属于点击

if (layoutParams.leftMargin == -MAX_WIDTH)

switch (position) {

case 0:

Intent intent0 = new Intent(MainActivity.this, MoreSet.class);

startActivity(intent0);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);// 右往左推出效果

break;

case 1:

Intent Intent1 = new Intent(MainActivity.this,

CaptureActivity.class);

startActivityForResult(Intent1, 0);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

break;

case 2:

Intent intent2 = new Intent(MainActivity.this,

MoreYiJianFanKui.class);

startActivity(intent2);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);// 右往左推出效果

break;

case 3:

// Intent intent3=new Intent(MainActivity.this,MoreHelp.class);

// startActivity(intent3);

dialogShow();

break;

case 4:

checkDilog();

break;

case 5:

Intent intent5 = new Intent(MainActivity.this,

MoreUploadPhoto.class);

startActivity(intent5);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

break;

case 6:

Intent intent6 = new Intent(MainActivity.this, MoreAbout.class);

startActivity(intent6);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

break;

}

 

}

private void checkDilog(){

CharSequence[] items = { " 已是最新版本v1.0", " 进入官网" };

Builder dialog = new AlertDialog.Builder(MainActivity.this);

dialog.setTitle(" 检查版本更新").setItems(items, new OnClickListener() {

 

@Override

public void onClick(DialogInterface dialog, int which) {

switch (which) {

case 1:

Intent intent4 = new Intent(MainActivity.this,

MoreCheckUpdate.class);

startActivity(intent4);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

break;

}

}

}).create().show();

}

private void dialogShow() {

// TODO Auto-generated method stub

Builder dialog = new Builder(MainActivity.this);

dialog.setMessage("是否联系客服?");

dialog.setTitle("提示");

dialog.setPositiveButton("",

new android.content.DialogInterface.OnClickListener() {

 

public void onClick(DialogInterface dialog, int which) {

Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:18255157509"));    

            startActivity(intent);    

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

}

});

dialog.setNegativeButton("",

new android.content.DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

});

dialog.create().show();

}

 

 

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// TODO Auto-generated method stub

if (requestCode == -1 || data == null)

return;

switch (resultCode) {

case 100:

 

Fragment currentFragment = getSupportFragmentManager()

.findFragmentById(R.id.fragment_user);

if (currentFragment instanceof UserFragment) {

((UserFragment) currentFragment).hideLogin();

}

break;

}

}

 

}

 

用户注册登录界面代码:

package com.gemptc.fashionrecipe.user;

import java.io.IOException;

import java.util.Observable;

import java.util.regex.Pattern;

import org.pixmob.httpclient.HttpClient;

import org.pixmob.httpclient.HttpResponse;

import org.pixmob.httpclient.HttpResponseHandler;

 

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Intent;

import android.content.SharedPreferences;

import android.os.AsyncTask;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnFocusChangeListener;

import android.view.Window;

import android.widget.AutoCompleteTextView;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

 

import com.gemptc.fashionrecipe.R;

import com.gemptc.fashionrecipe.bo.CookUser;

import com.gemptc.fashionrecipe.bo.IP;

import com.google.gson.Gson;

 

public class RegisterActivity extends Activity {

// 邮箱格式

private final static Pattern emailer = Pattern

.compile("^([\\.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\\.[a-zA-Z0-9_-]{2,3}){1,2})$");

private final static Pattern user = Pattern.compile("^([0-9])*$");

private ImageView registerReturnBtn;

private Button registerRegisterBtn;

private EditText registerUserNameEdit;

private EditText registerPasswordEdit;

private EditText registerPasswordAgainEdit;

private AutoCompleteTextView registerMailboxEdit;

String[] stringArray = { "@163.com", "@126.com", "@qq.com", "@sina.com",

"@gmail.com" };

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_register);

findViewById(R.id.loginbtn).setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

EnterActivity instance = EnterActivity.instance;

if (instance != null) {

finish();

overridePendingTransition(R.anim.push_right_in,

R.anim.push_right_out);

} else {

finish();

Intent intent = new Intent(RegisterActivity.this,

EnterActivity.class);

startActivity(intent);

overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

}

}

});

registerUserNameEdit = (EditText) findViewById(R.id.registerUserNameEdit);

registerPasswordEdit = (EditText) findViewById(R.id.registerPasswordEdit);

registerPasswordAgainEdit = (EditText) findViewById(R.id.registerPasswordAgainEdit);

registerRegisterBtn = (Button) findViewById(R.id.registerRegisterBtn);

registerReturnBtn = (ImageView) findViewById(R.id.registerReturnBtn);

registerMailboxEdit = (AutoCompleteTextView) findViewById(R.id.registerMailboxEdit);

 

registerUserNameEditListener();

 

registerPasswordEditListener();

 

registerPasswordAgainEditListener();

 

registerMailboxListener();

 

registerBtnListener();

 

registerReturnBtnListener();

 

}

 

public void registerUserNameEditListener() {

registerUserNameEdit

.setOnFocusChangeListener(new OnFocusChangeListener() {

 

@Override

public void onFocusChange(View v, boolean hasFocus) {

 

if (!hasFocus) {

if (registerUserNameEdit.getText().toString()

.trim().length() < 4) {

Toast.makeText(RegisterActivity.this,

"用户名不能小于4个字符", Toast.LENGTH_SHORT)

.show();

}

if (registerUserNameEdit.getText().toString()

.trim().length() > 0

&& isUser(registerUserNameEdit.getText()

.toString().trim())) {

 

Toast.makeText(RegisterActivity.this,

"用户名不能全为数字", Toast.LENGTH_SHORT).show();

}

}

 

}

});

}

 

private void registerPasswordEditListener() {

// TODO Auto-generated method stub

registerPasswordEdit

.setOnFocusChangeListener(new OnFocusChangeListener() {

 

@Override

public void onFocusChange(View v, boolean hasFocus) {

// TODO Auto-generated method stub

if (!hasFocus) {

if (registerPasswordEdit.getText().toString()

.trim().length() < 6) {

Toast.makeText(RegisterActivity.this,

"密码不能小于6个字符", Toast.LENGTH_LONG).show();

}

}

}

});

 

}

 

private void registerPasswordAgainEditListener() {

registerPasswordAgainEdit

.setOnFocusChangeListener(new OnFocusChangeListener() {

 

@Override

public void onFocusChange(View v, boolean hasFocus) {

// TODO Auto-generated method stub

if (!hasFocus) {

if (!registerPasswordAgainEdit

.getText()

.toString()

.trim()

.equals(registerPasswordEdit.getText()

.toString().trim())) {

Toast.makeText(RegisterActivity.this,

"两次密码输入不一致", Toast.LENGTH_SHORT).show();

 

}

}

}

});

}

 

// 邮箱的自动提示文本,自动填充邮箱后缀

public void registerMailboxListener() {

 

final MailboxAdatper mailboxAdatper = new MailboxAdatper(this);

registerMailboxEdit.setAdapter(mailboxAdatper);

registerMailboxEdit.addTextChangedListener(new TextWatcher() {

 

@Override

public void onTextChanged(CharSequence s, int start, int before,

int count) {

// TODO Auto-generated method stub

 

}

 

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

// TODO Auto-generated method stub

 

}

 

@Override

public void afterTextChanged(Editable s) {

String input = s.toString();

mailboxAdatper.mList.clear();

if (input.length() > 0) {

for (int i = 0; i < stringArray.length; ++i) {

mailboxAdatper.mList.add(input + stringArray[i]);

}

}

mailboxAdatper.notifyDataSetChanged();

registerMailboxEdit.showDropDown();

}

});

 

registerMailboxEdit

.setOnFocusChangeListener(new OnFocusChangeListener() {

 

@Override

public void onFocusChange(View v, boolean hasFocus) {

// TODO Auto-generated method stub

 

}

});

}

 

private void registerBtnListener() {

 

// 注册按钮的监听,当点击注册按钮时,需要将user的注册信息传上服务器

// 再由服务器上传到数据库,服务器将返回一些信息给android客户端

registerRegisterBtn.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

 

if (!checkEdit()) {

return;

}

new ConnectServer().execute();

}

 

});

}

 

private void registerReturnBtnListener() {

registerReturnBtn.setOnClickListener(new OnClickListener() {

 

@Override

public void onClick(View v) {

finish();

overridePendingTransition(R.anim.push_right_in,

R.anim.push_right_out);

}

});

}

 

private boolean checkEdit() {

 

if (registerMailboxEdit.getText().toString().trim().equals("")) {

Toast.makeText(RegisterActivity.this, "邮箱不能有空", Toast.LENGTH_SHORT)

.show();

} else if (registerUserNameEdit.getText().toString().trim().equals("")) {

Toast.makeText(RegisterActivity.this, "用户名不能为空", Toast.LENGTH_SHORT)

.show();

} else if (registerUserNameEdit.getText().toString().trim().length() < 4) {

Toast.makeText(RegisterActivity.this, "用户名不能小于4个字符",

Toast.LENGTH_SHORT).show();

} else if (registerUserNameEdit.getText().toString().trim().length() > 0

&& isUser(registerUserNameEdit.getText().toString().trim())) {

 

Toast.makeText(RegisterActivity.this, "用户名不能全为数字",

Toast.LENGTH_SHORT).show();

} else if (registerPasswordEdit.getText().toString().trim().equals("")) {

Toast.makeText(RegisterActivity.this, "密码不能为空", Toast.LENGTH_SHORT)

.show();

} else if (registerPasswordAgainEdit.getText().toString().trim()

.equals("")) {

Toast.makeText(RegisterActivity.this, "密码不能为空", Toast.LENGTH_SHORT)

.show();

} else if (!registerPasswordAgainEdit.getText().toString().trim()

.equals(registerPasswordEdit.getText().toString().trim())) {

Toast.makeText(RegisterActivity.this, "两次密码输入不一致",

Toast.LENGTH_SHORT).show();

} else if (registerPasswordEdit.getText().toString().trim().length() < 6) {

Toast.makeText(RegisterActivity.this, "密码不能为少于6",

Toast.LENGTH_SHORT).show();

} else {

boolean email = isEmail(registerMailboxEdit.getText().toString()

.trim());

if (email == false) {

Toast.makeText(RegisterActivity.this, "您的邮箱不合法", 2000).show();

}

return email;

}

return false;

}

 

/**

 * 判断是不是一个合法的用户

 * 

 * @param email

 * @return

 */

public static boolean isUser(String user) {

if (user == null || user.trim().length() == 0)

return false;

return RegisterActivity.user.matcher(user).matches();

}

 

/**

 * 判断是不是一个合法的电子邮件地址

 * 

 * @param email

 * @return

 */

public static boolean isEmail(String email) {

if (email == null || email.trim().length() == 0)

return false;

return emailer.matcher(email).matches();

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.register, menu);

return true;

}

 

public boolean onKeyDown(int keyCode, KeyEvent event) {

// 如果按下的是返回键,并且没有重复

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

finish();

overridePendingTransition(R.anim.push_right_in,

R.anim.push_right_out);// 右往左推出效果

return false;

}

return false;

}

 

class ConnectServer extends AsyncTask<String, Void, Void> {

private String serverMsg;

// 自己看着改

// private final String URL =

// "http://10.10.2.92:8080/FashionSer/RegisterServlet";

private final String URL = IP.RegisterServlet;

 

HttpResponseHandler handler = new HttpResponseHandler() {

public void onResponse(HttpResponse response) throws IOException {

StringBuilder sb = new StringBuilder();

response.read(sb);

serverMsg = sb.toString();

}

};

 

private ProgressDialog progressDialog;

 

/*

 * 此方法在UI线程中执行任务被执行之后,立刻调用 UI线程。这步通常被用于设置任务,例如在用户界面显示一个进度条

 * 

 * @see android.os.AsyncTask#onPreExecute()

 */

@Override

protected void onPreExecute() {

// TODO Auto-generated method stub

super.onPreExecute();

// 创建ProgressDialog对象

progressDialog = new ProgressDialog(RegisterActivity.this);

// 设置进度条风格,风格为圆形,旋转的

progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

// 设置ProgressDialog 标题

progressDialog.setTitle("提示");

// 设置ProgressDialog 提示信息

progressDialog.setMessage("正在注册,请稍后...");

// 设置ProgressDialog 标题图标

// progressDialog.setIcon(R.drawable.wait);

// 设置ProgressDialog 的进度条是否不明确

progressDialog.setIndeterminate(false);

progressDialog.show();

}

 

/*

 * *onPreExecute()完成执行,立刻调用后台线程,这步被用于执行较长时间的后台计算。 此方法在后台线程中执行

 * 异步任务的参数也被传到这步。计算的结果必须在这步返回,将传回到上一步

 * 

 * @see android.os.AsyncTask#doInBackground(Params[])

 */

@Override

protected Void doInBackground(String... params) {

// TODO Auto-generated method stub

HttpClient hc = new HttpClient(RegisterActivity.this);

try {

CookUser user = gatherUserInfo();

String json = new Gson().toJson(user);

hc.post(URL).content(json.getBytes("UTF-8"), "text/xml")

.to(handler).execute();

} catch (Exception e) {

e.printStackTrace();

}

return null;

 

}

 

/*

 * *此方法在UI线程中执行 当后台计算结束时,调用 UI线程。后台计算结果作为一个参数传递到这步

 * 

 * @see android.os.AsyncTask#onPostExecute(java.lang.Object)

 */

public void onPostExecute(Void result) {

 

if (null != progressDialog && progressDialog.isShowing()) {

progressDialog.dismiss();

}

Toast.makeText(RegisterActivity.this, serverMsg, Toast.LENGTH_SHORT)

.show();

if ("注册成功!".equals(serverMsg)) {

Intent intent = getIntent();

RegisterActivity.this.setResult(100, intent);

RegisterActivity.this.finish();

EnterActivity instance = EnterActivity.instance;

if (instance != null)

instance.finish();

SharedPreferences setSharedpre = getSharedPreferences(

"CookUser", MODE_PRIVATE);

SharedPreferences.Editor editor = setSharedpre.edit();

editor.putString("UserMailbox", registerMailboxEdit.getText()

.toString());

editor.putString("CUmima", registerPasswordEdit.getText()

.toString());

editor.putString("CUname", registerUserNameEdit.getText()

.toString());

editor.commit();

}

}

 

private CookUser gatherUserInfo() {

CookUser user = new CookUser();

user.setCUname(registerUserNameEdit.getText().toString());

user.setCUmima(registerPasswordEdit.getText().toString());

user.setUserMailbox(registerMailboxEdit.getText().toString());

 

return user;

}

 

}

}

 

搜索界面代码:

private void search(String key) {

AppInfo.putHistory(context, key);

String string = AppInfo.getHistory(context);

String search = string.substring(1, string.length());

String[] searchs = search.split(",");

List<String> list = new ArrayList<String>();

if (searchs.length <= 5) {

for (int i = searchs.length - 1; i >= 0; i--) {

list.add(searchs[i]);

}

}

if (searchs.length > 5) {

for (int i = searchs.length - 1; i >= searchs.length - 5; i--) {

list.add(searchs[i]);

}

}

searchHistory.clear();

searchHistory.addAll(list);

sAdapter.notifyDataSetChanged();

loadRecipe();

layout.setVisibility(View.GONE);

}

private void loadRecipe() {

 

categoryId = edit_search.getText().toString().trim();

final String[] from = new String[] { "img", "name", "kouwei", "gongyi",

"shijian" };

final int[] to = new int[] { R.id.creatrecipe_item_img,

R.id.createcipe_item_name, R.id.item_kw, R.id.item_gy,

R.id.item_time };

data = DataModel.getInfoRecipes(SearchActivity.this, categoryId, 0);

if (data.size() > 0) {

adapter = new ImageSimpleAdapter(SearchActivity.this, data,

R.layout.activity_createrecipe_list_item, from, to);

listView.setAdapter(adapter);

} else {

dialog();

}

new Thread(new Runnable() {

 

public void run() {

int i = 0;

while (i < data.size()) {

@SuppressWarnings("unchecked")

HashMap<String, Object> map = (HashMap<String, Object>) adapter

.getItem(i);

 

// 获取图片路径并保存到sd

String imagePath = DataModel.getImagePath(String

.valueOf(map.get("url")));

// 根据路径获取图片

Bitmap bmp = BitmapFactory.decodeFile(imagePath);

 

if (bmp == null) {

map.put("img", R.drawable.nopic);

} else

map.put("img", bmp);

i++;

 

runOnUiThread(new Runnable() {

 

@Override

public void run() {

adapter.notifyDataSetChanged();

 

}

});

}

}

}).start();

}

上传交流区主要代码:

public class UploadFragment extends Fragment implements IXListViewListener,

OnClickListener {

private View view;

private XListView listView;

private ImageView uploadBtn;

private List<Trends> listData = new ArrayList<Trends>();

private UploadAdapter adapter;

private RelativeLayout layout1;

 

private int pageCode = 1;

private String time;

 

public void start() {

// TODO Auto-generated method stub

if (!NetworkTools.isNetworkAvailable(getActivity())) { // 判断网络是否存在网络

layout1.setVisibility(View.GONE);

} else {

layout1.setVisibility(View.VISIBLE);

new Thread(new Handlers()).start();

super.onResume();

}

 

}

 

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// return super.onCreateView(inflater, container, savedInstanceState);

 

view = inflater.inflate(R.layout.upload, container, false);

init();

return view;

 

}

 

private void init() {

// 上传按钮

uploadBtn = (ImageView) view.findViewById(R.id.upload_btn);

uploadBtn.setOnClickListener(this);

listView = (XListView) view.findViewById(R.id.order_form_grid);

listView.setPullLoadEnable(true);

listView.setXListViewListener(this);

layout1 = (RelativeLayout) view.findViewById(R.id.upload_layout1);

failLoad = (ImageView) view.findViewById(R.id.fail_loading_img);

 

}

 

private Handler handler2 = new Handler() {

public void handleMessage(Message msg) {

switch (msg.what) {

case 1:

pageCode = 1;

setView();

adapter.notifyDataSetChanged();

onLoad();

break;

case 2:

// setView();

adapter.notifyDataSetChanged();

onLoad();

break;

case 3:

listView.stopLoadMore();

Toast.makeText(getActivity(), "已到最后一页", Toast.LENGTH_SHORT)

.show();

break;

}

}

 

private void setView() {

// TODO Auto-generated method stub

adapter = new UploadAdapter(getActivity(), listData);

listView.setAdapter(adapter);

listView.setOnItemClickListener(new OnItemClickListener() {

 

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

Trends trends = adapter.getTrend(position);

String trenId = trends.getTrenId();

String regiEmail = trends.getRegiEmail();

String regiName = trends.getRegiName();

String trenContent = trends.getTrenContent();

String trenTime = trends.getTrenTime();

String trenNumber = trends.getTrenNumber();

String regiImage = trends.getRegiImage();

String trenImage = trends.getTrenImage();

 

Intent intent = new Intent();

intent.setClass(getActivity(), UploadTalk.class);

intent.putExtra("trenId", trenId);

intent.putExtra("regiEmail", regiEmail);

intent.putExtra("regiName", regiName);

intent.putExtra("trenContent", trenContent);

intent.putExtra("trenTime", trenTime);

intent.putExtra("trenNumber", trenNumber);

intent.putExtra("regiImage", regiImage);

intent.putExtra("trenImage", trenImage);

if (!NetworkTools.isNetworkAvailable(getActivity())) {

layout1.setVisibility(View.GONE);

} else {

startActivity(intent);

}

 

}

});

 

}

};

private ImageView failLoad;

 

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.upload_btn:

Intent intent = new Intent(getActivity(), MoreUploadPhoto.class);

startActivity(intent);

getActivity().overridePendingTransition(R.anim.push_left_in,

R.anim.push_left_out);

break;

case R.id.fail_loading_img:

start();

break;

default:

break;

}

}

private class Handlers implements Runnable {

public void run() {

Looper.prepare();// 加入消息队列;

try {

listData = UploadService.getList(

// "http://10.10.2.53:8080/FashionSer/UploadServlet",

IP.uploadServlet,

// "http://10.10.2.28:8080/FashionSer/UploadServlet",

getActivity());

Message msg = UploadFragment.this.handler2.obtainMessage(1);

UploadFragment.this.handler2.sendMessage(msg);

} catch (Exception e) {

// TODO Auto-generated catch block

if(e.getMessage()=="NullPointerException"){

Toast.makeText(getActivity(), "您的网速不给力,请稍等哦...", Toast.LENGTH_SHORT).show();

layout1.setVisibility(View.GONE);

}

e.printStackTrace();

// Log.e("Upload service", e.getMessage());

}

Looper.loop();// 加入消息队列;

}

}

private class Handlers2 implements Runnable {

public void run() {

Looper.prepare();// 加入消息队列;

pageCode++;

try {

List<Trends> list = new ArrayList<Trends>();

list = UploadService.getList(IP.uploadServletPage

+ pageCode, getActivity());

listData.addAll(list);

Message msg = UploadFragment.this.handler2.obtainMessage(2);

UploadFragment.this.handler2.sendMessage(msg);

} catch (Exception e) {

// TODO Auto-generated catch block

Message msg = UploadFragment.this.handler2.obtainMessage(3);

UploadFragment.this.handler2.sendMessage(msg);

}

Looper.loop();// 加入消息队列;

}

}

private void onLoad() {

listView.stopRefresh();

listView.stopLoadMore();

listView.setRefreshTime(time);

}

// 顶部

@SuppressWarnings("deprecation")

@Override

public void onRefresh() {

// TODO Auto-generated method stub

if (!NetworkTools.isNetworkAvailable(getActivity())) {// 判断网络是否存在网络

layout1.setVisibility(View.GONE);

} else {

layout1.setVisibility(View.VISIBLE);

time = new Date().toLocaleString();

new Thread(new Handlers()).start();

}

 

}

// 底部

@Override

public void onLoadMore() {

// TODO Auto-generated method stub

if (!NetworkTools.isNetworkAvailable(getActivity())) {// 判断网络是否存在网络

layout1.setVisibility(View.GONE);

} else {

layout1.setVisibility(View.VISIBLE);

new Thread(new Handlers2()).start();

}

}

}

JDBC的连接:

package com.gemptc.fashionrecipe.util;

import java.sql.Connection;

import java.sql.DriverManager;

public class DBLink {

static String driver = "com.mysql.jdbc.Driver";

static String url = "jdbc:mysql://localhost:3306/xm";

static String user = "root";

static String password = "1234";

public static Connection getConnect() {

try {

// 1、动态加载驱动文件 //导入驱动类

Class.forName(driver);

Connection connection = DriverManager.getConnection(url, user,

password);

System.out.println("连接成功---");

return connection;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("连接失败!!");

return null;

}

}

public static void main(String[] args) {

getConnect();

}

}

 

 

0 0
原创粉丝点击