`

android 自定义登陆弹出框

阅读更多



 

 从本节将开始阐述一个完整系统Demo,从登陆--主页--查询展示具体详情...这节是一个自定义登陆弹出框,接着上一节的logo全屏页面之后将出现一个全屏的ImagView,点击弹出自定义登陆框,输入账号密码提交,弹出提交等待框效果如图:

 

提交等待框:

 

代码:

package com.gk;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.gk.data.UserDataServiceHelper;
import com.gk.view.mainview;

public class EHRActivity extends Activity implements OnClickListener{
    
 private ImageView button1;
 private String usernamestr;
 private String passwordstr;
 private ProgressDialog progressdialog;
 private AlertDialog selfdialog;
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  this.requestWindowFeature(Window.FEATURE_NO_TITLE);//取消标题栏
  //取消状态栏
  this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
  setContentView(R.layout.main);
        button1 =(ImageView) findViewById(R.id.button1);
        button1.setOnClickListener(this);
       // initview();
    }

    private View view;

 public void initview() {
  //创建view从当前activity获取loginactivity
  LayoutInflater  inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
  view = inflater.inflate(R.layout.login, null);
  
  final EditText username=(EditText)view.findViewById(R.id.txt_username);
  final EditText password = (EditText)view.findViewById(R.id.txt_password);
  username.setText("XXXX");
  password.setText("XXXX"); //为了测试方便所以在这里初始化弹出框是填上账号密码
  AlertDialog.Builder ad =new AlertDialog.Builder(EHRActivity.this);
  ad.setView(view);
  ad.setTitle("账号登陆");
  selfdialog = ad.create();
  
  selfdialog.setButton("登陆", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
   //获取输入框的用户名密码

   usernamestr = username.getText().toString();
   passwordstr =password.getText().toString();
   progressdialog =ProgressDialog.show(EHRActivity.this, "请等待...", "正在为您登陆...");
   refreshHandler.sleep(100);
    //dialog.cancel();
   }
  });
  selfdialog.setButton2("取消", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    selfdialog.cancel();
   }
  });
  selfdialog.show();
 }
 
 private RefreshHandler refreshHandler =new RefreshHandler();
 
 //处理器
 class RefreshHandler extends Handler{

  @Override
  public void handleMessage(Message msg) {
   try{

   //这里是提交到服务器的代码,封装代码这里不再给出,网上例子很多可以找找
    String host =UserDataServiceHelper.getHost();
    String uri=host+"/anndroiduser.do?user=login";

    /**flag 是接收来自服务器端的数据包装,这里客户与服务器交互用的是json

       json解析出对象,将对象放入bundle,如:

           Bundle bagent =new Bundle();
           bagent.putSerializable("agent", agent);

    */


    Bundle flag = UserDataServiceHelper.login(uri, usernamestr, passwordstr);
    if(flag !=null){
     Toast.makeText(EHRActivity.this, "登陆成功", Toast.LENGTH_SHORT).show();
     Intent intent =new Intent();
     intent.setClass(EHRActivity.this, mainview.class);
     intent.putExtras(flag);
     EHRActivity.this.startActivity(intent);
    }else{
     Toast.makeText(EHRActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();
     view.findViewById(R.id.txt_loginerror).setVisibility(View.VISIBLE);
    }
    
   }catch(Exception e){
    e.printStackTrace();
   }finally{
    progressdialog.dismiss();//解除进度条
   }
  }
  
  public void sleep(long delayMillis){
   this.removeMessages(0);
   sendMessageDelayed(obtainMessage(0), delayMillis);
  }
 }

 @Override
 public void onClick(View v) {
  //创建view从当前activity获取loginactivity
  LayoutInflater  inflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
  view = inflater.inflate(R.layout.login, null);
  
  final EditText username=(EditText)view.findViewById(R.id.txt_username);
  final EditText password = (EditText)view.findViewById(R.id.txt_password);
  username.setText("3001");
  password.setText("3001");
  AlertDialog.Builder ad =new AlertDialog.Builder(EHRActivity.this);
  ad.setView(view);
  ad.setTitle("账号登陆");
  selfdialog =ad.create();
  selfdialog.setButton("登陆", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
   //获取输入框的用户名密码

   usernamestr = username.getText().toString();
   passwordstr =password.getText().toString();

   //提交的时候弹出一个进度条对话框,当处理完毕关闭
   progressdialog =ProgressDialog.show(EHRActivity.this, "请等待...", "正在为您登陆...");
   refreshHandler.sleep(100);
   //dialog.cancel();
   }
  });
  selfdialog.setButton2("取消", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    selfdialog.cancel();
   }
  });
  selfdialog.show();
 }
}

  

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="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_loginerror"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="输入的账号和密码不正确"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#ff0000"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="账号"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/txt_username"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:text="密码"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/txt_password"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:autoText="false"
        android:capitalize="none"
        android:gravity="fill_horizontal"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/txt_toregister"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dip"
        android:layout_marginRight="20dip"
        android:gravity="left"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#2200C1" />

</LinearLayout>

 

  • 大小: 50.7 KB
  • 大小: 56.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics