編輯:關於Android編程
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/bg_01">" <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注冊" android:textSize="22dip" android:textColor="#FFFFFF" android:paddingLeft="140dip" android:paddingRight="50dip" android:paddingTop="10dip" android:background="@drawable/topbg" /> " <EditText android:id="@+id/register_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:background="@drawable/search" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:height="40dip" android:hint="用戶名" /> <EditText android:id="@+id/register_passwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:background="@drawable/search" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:height="40dip" android:hint="密碼" /> <EditText android:id="@+id/reregister_passwd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:background="@drawable/search" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:height="40dip" android:hint="確認密碼" /> <Button android:id="@+id/register_submit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/topbg" android:height="40dip" android:width="70dip" android:layout_marginTop="60dip" android:text="確定" android:textColor="#FFFFFF" android:textSize="22dip" /> </LinearLayout>
處理注冊頁面的Activity:
package com.example.foreveross.office; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import com.example.wenandroid.R; import android.app.Activity; import android.os.Bundle; import android.os.StrictMode; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class UserRegister extends Activity { private EditText register_username; private EditText register_passwd; private EditText reregister_passwd; private Button register_submit; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); setContentView(R.layout.user_register); register_username=(EditText)findViewById(R.id.register_username); register_passwd=(EditText)findViewById(R.id.register_passwd); reregister_passwd=(EditText)findViewById(R.id.reregister_passwd); register_submit=(Button)findViewById(R.id.register_submit); register_username.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus){ if(register_username.getText().toString().trim().length()<4){ Toast.makeText(UserRegister.this, "用戶名不能小於4個字符", Toast.LENGTH_SHORT).show(); } } } }); register_passwd.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus){ if(register_passwd.getText().toString().trim().length()<6){ Toast.makeText(UserRegister.this, "密碼不能小於8個字符", Toast.LENGTH_SHORT).show(); } } } }); reregister_passwd.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus){ if(!reregister_passwd.getText().toString().trim().equals(register_passwd.getText().toString().trim())){ Toast.makeText(UserRegister.this, "兩次密碼輸入不一致", Toast.LENGTH_SHORT).show(); } } } }); register_submit.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { if(!checkEdit()){ return; } // TODO Auto-generated method stub String httpUrl="http://192.168.1.100:8080/web-test/register.jsp"; HttpPost httpRequest=new HttpPost(httpUrl); List<NameValuePair> params=new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username",register_username.getText().toString().trim())); params.add(new BasicNameValuePair("password",register_passwd.getText().toString().trim())); HttpEntity httpentity = null; try { httpentity = new UrlEncodedFormEntity(params,"utf8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } httpRequest.setEntity(httpentity); HttpClient httpclient=new DefaultHttpClient(); HttpResponse httpResponse = null; try { httpResponse = httpclient.execute(httpRequest); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(httpResponse.getStatusLine().getStatusCode()==200) { String strResult = null; try { strResult = EntityUtils.toString(httpResponse.getEntity()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(UserRegister.this, strResult, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(UserRegister.this, "請求錯誤", Toast.LENGTH_SHORT).show(); } } }); } private boolean checkEdit(){ if(register_username.getText().toString().trim().equals("")){ Toast.makeText(UserRegister.this, "用戶名不能為空", Toast.LENGTH_SHORT).show(); }else if(register_passwd.getText().toString().trim().equals("")){ Toast.makeText(UserRegister.this, "密碼不能為空", Toast.LENGTH_SHORT).show(); }else if(!register_passwd.getText().toString().trim().equals(reregister_passwd.getText().toString().trim())){ Toast.makeText(UserRegister.this, "兩次密碼輸入不一致", Toast.LENGTH_SHORT).show(); }else{ return true; } return false; } }
登錄頁面xml:
user_login.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/bg_01"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登錄" android:textSize="22dip" android:textColor="#FFFFFF" android:paddingLeft="140dip" android:paddingRight="50dip" android:paddingTop="10dip" android:background="@drawable/topbg" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <EditText android:id="@+id/login_username" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_marginTop="30dip" android:hint="用戶名" android:paddingTop="10dip" android:textSize="18dip" android:background="@drawable/search"> </EditText> <EditText android:id="@+id/login_password" android:layout_width="fill_parent" android:layout_height="40dip" android:layout_marginLeft="20dip" android:layout_marginRight="20dip" android:layout_marginTop="10dip" android:password="true" android:paddingTop="10dip" android:textSize="18dip" android:hint="密碼" android:background="@drawable/search"> </EditText> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="15dip"> <CheckBox android:id="@+id/cb1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dip" android:layout_marginRight="30dip" android:text="記住密碼" android:button="@drawable/checkbox_icon_no" />" <CheckBox android:id="@+id/cb2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自動登錄" android:paddingRight="50dip" android:button="@drawable/checkbox_icon_no"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="20dip"> <Button android:id="@+id/user_login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登錄" android:layout_marginLeft="50dip" android:textColor="#F7FBFD" android:background="#FF0000" android:width="70dip" android:height="40dip" android:textSize="18dip" /> <Button android:id="@+id/user_register_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="注冊" android:layout_marginLeft="50dip" android:textColor="#F7FBFD" android:width="70dip" android:height="40dip" android:background="#0F9000" android:textSize="18dip" /> </LinearLayout> </LinearLayout>
登錄頁面Activity:
package com.example.foreveross.office; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import com.example.wenandroid.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.StrictMode; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class UserLogin extends Activity implements OnClickListener { private EditText login_username; private EditText login_password; private Button user_login_button; private Button user_register_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); setContentView(R.layout.user_login); initWidget(); } private void initWidget() { login_username=(EditText)findViewById(R.id.login_username); login_password=(EditText)findViewById(R.id.login_password); user_login_button=(Button)findViewById(R.id.user_login_button); user_register_button=(Button)findViewById(R.id.user_register_button); user_login_button.setOnClickListener(this); user_register_button.setOnClickListener(this); login_username.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus){ String username=login_username.getText().toString().trim(); if(username.length()<4){ Toast.makeText(UserLogin.this, "用戶名不能小於4個字符", Toast.LENGTH_SHORT); } } } }); login_password.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(!hasFocus){ String password=login_password.getText().toString().trim(); if(password.length()<4){ Toast.makeText(UserLogin.this, "密碼不能小於4個字符", Toast.LENGTH_SHORT); } } } }); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()) { case R.id.user_login_button: if(checkEdit()) { login(); } break; case R.id.user_register_button: Intent intent2=new Intent(UserLogin.this,UserRegister.class); startActivity(intent2); break; } } private boolean checkEdit(){ if(login_username.getText().toString().trim().equals("")){ Toast.makeText(UserLogin.this, "用戶名不能為空", Toast.LENGTH_SHORT).show(); }else if(login_password.getText().toString().trim().equals("")){ Toast.makeText(UserLogin.this, "密碼不能為空", Toast.LENGTH_SHORT).show(); }else{ return true; } return false; } private void login(){ String httpUrl="http://192.168.1.102:8080/web-test/login.jsp"; HttpPost httpRequest=new HttpPost(httpUrl); List<NameValuePair> params=new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("username",login_username.getText().toString().trim())); params.add(new BasicNameValuePair("password",login_password.getText().toString().trim())); HttpEntity httpentity = null; try { httpentity = new UrlEncodedFormEntity(params,"utf8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } httpRequest.setEntity(httpentity); HttpClient httpclient=new DefaultHttpClient(); HttpResponse httpResponse = null; try { httpResponse = httpclient.execute(httpRequest); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(httpResponse.getStatusLine().getStatusCode()==200) { String strResult = null; try { strResult = EntityUtils.toString(httpResponse.getEntity()); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Toast.makeText(UserLogin.this, strResult, Toast.LENGTH_SHORT).show(); Intent intent=new Intent(UserLogin.this,IndexActivity.class); startActivity(intent); } else { Toast.makeText(UserLogin.this, "登錄失敗!", Toast.LENGTH_SHORT).show(); } } }
本文實例講述了Android編程之界面跳動提示動畫效果實現方法。分享給大家供大家參考,具體如下:上一個效果圖:先上布局:<RelativeLayout xmlns:
一、實現效果圖二、核心代碼1.自定義MyProgressView.javapackage com.czhappy.effectdemo.view;import andro
經過學習,我們知道Volley的架構如下:從架構上我們可以看到,volley有設置緩存機制,當找不到數據緩存或數據緩存過期時,才會聯網獲取新的數據。Volley 本身有緩
一.概述因為之前項目有動態熱修復的功能,在修復的過程中會從服務器上下載一個新的dex文件來替換老的dex文件,所以就牽扯到文件身份效驗的問題.通常接口會下發一個MD5值,