频道栏目
首页 > 资讯 > Android > 正文

Android[初级教程]第十章 AlertDialog控件

11-10-03        来源:[db:作者]  
收藏   我要投稿

 这次我们来学习AlertDialog控件,这次老妖怪们想了,不能让每个妖怪都能看到通辑令啊?得要有个认证权限啊,万一孙猴子变成小妖怪看到了多不好啊,呵呵,这次我们就用AlertDialog控件来做登录认证功能.先上图

 


 

 

 

 

 

还是来看main.xml

 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView android:text="西游记各主人公通辑令" android:id="@+id/textView1
        android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> 
    <ListView android:id="@+id/listView" android:layout_height="wrap_content" 
        android:layout_width="match_parent"></ListView> 
 
    <TextView android:layout_height="wrap_content" 
        android:layout_width="fill_parent" android:text="@string/hello" 
        android:id="@+id/text"></TextView> 
</LinearLayout> 

很简单,里面就加了个ListView控件,为的是将师徙四人的名字显示出来

再创建一个login.xml
 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:padding="10dp"> 
    <TextView android:text="账号" android:layout_width="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_height="wrap_content" android:id="@+id/textView1"></TextView> 
    <EditText android:id="@+id/user" android:layout_width="match_parent" 
        android:layout_height="wrap_content"> 
        <requestFocus></requestFocus> 
    </EditText> 
    <TextView android:text="密码" android:layout_width="wrap_content" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_height="wrap_content" android:id="@+id/textView2"></TextView> 
    <EditText android:id="@+id/pass" android:layout_width="match_parent" 
        android:layout_height="wrap_content" android:inputType="textPassword"></EditText> 
 
</LinearLayout> 

这个界面是区配Dialog中的显示视图的

最后再创建一个image.xml

 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content" android:weightSum="1"> 
    <ImageView android:id="@+id/imageView1" android:src="@drawable/bajie" 
        android:layout_width="160dp" android:layout_gravity="center" 
        android:scaleType="centerCrop" android:layout_height="155dp"></ImageView> 
</LinearLayout> 
OK,layout都创建好了,现在就主java代码了:

 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
 
public class ButtonDemoActivity extends Activity 

    private TextView text = null; 
    private int[] image = { R.drawable.tangseng, R.drawable.wukong, 
            R.drawable.bajie, R.drawable.shaseng }; 
    private String[] item = { "唐僧", "孙悟空 ", "猪八戒", "沙和尚" }; 
    private ListView listView; 
    protected int position_int; 
 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        // 通过ID查找到main.xml中的TextView控件 
        text = (TextView) findViewById(R.id.text); 
 
        // 通过ID查找到main.xml中的ListView控件 
        listView = (ListView) findViewById(R.id.listView); 
 
        // 设置ListView适配器 
        ArrayAdapter adapter = new ArrayAdapter(this, 
                android.R.layout.simple_list_item_1, item); 
 
        listView.setAdapter(adapter); 
 
        // 设置ListView单项选择监听器 
        listView.setOnItemClickListener(new OnItemClickListener() 
        { 
 
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1, 
                    int position, long arg3) 
            { 
                String str = item[position]; 
                updateText(str); 
                // 将点击的位置参数传递给全局变量 
                position_int = position; 
                // 显示登录框 
                dialog_show(); 
 
            } 
        }); 
 
    } 
 
    /**
     * 登录框
     */ 
    protected void dialog_show() 
    { 
        // 将Layout中的login.xml匹配给视图控件 
        LayoutInflater inflater = LayoutInflater.from(this); 
        final View view = inflater.inflate(R.layout.login, null); 
        // 创建Dialog 
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("登录框"); 
        builder.setView(view); 
        builder.setPositiveButton("登录", new OnClickListener() 
        { 
 
            @Override 
            public void onClick(DialogInterface dialog, int which) 
            { 
                // 取得login.xml中的账号EditText和密码EditText控件 
                EditText user = (EditText) view.findViewById(R.id.user); 
                EditText pass = (EditText) view.findViewById(R.id.pass); 
                // 取得两个控件中的值 
                String user_str = user.getText().toString(); 
                String pass_str = pass.getText().toString(); 
                // 验证账号和密码 
                validate(user_str, pass_str); 
 
            } 
        }); 
        builder.setNegativeButton("取消", new OnClickListener() 
        { 
 
            @Override 
            public void onClick(DialogInterface dialog, int which) 
            { 
                dialog.dismiss(); 
            } 
        }); 
        // 这个很重要的,是dialog的显示功能,如果这个没有的话,是不会显示出来的 
        builder.show(); 
 
    } 
 
    /**
     * 验证账号和密码
     * 
     * @param user_str
     *            账号
     * @param pass_str
     *            密码
     */ 
    protected void validate(String user_str, String pass_str) 
    { 
        if ("admin".equals(user_str) && "admin".equals(pass_str)) 
        { 
            image_dialog(); 
        } else 
        { 
            Toast.makeText(this, "您的密码不对,请重新输入", 1).show(); 
        } 
 
    } 
     
    /**
     * 图片Dialog显示功能
     */ 
    private void image_dialog() 
    { 
        //同上一样,是取得Layout中的image.xml模板 
        LayoutInflater inflater = LayoutInflater.from(this); 
        View view = inflater.inflate(R.layout.image, null); 
        //取得image.xml中的ImageView控件 
        ImageView imageView = (ImageView) view.findViewById(R.id.imageView1); 
        //设置ImagView控件显示的图片ID 
        imageView.setImageResource(image[position_int]); 
        //创建Dialog 
        AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle(item[position_int]); 
        builder.setView(view); 
        builder.setPositiveButton("确定", new OnClickListener() 
        { 
 
            @Override 
            public void onClick(DialogInterface dialog, int which) 
            { 
                dialog.dismiss(); 
            } 
        }); 
        builder.show(); 
 
    } 
 
    private void updateText(String string) 
    { 
        // 将文本信息设置给TextView控件显示出来 
        text.setText(string); 
    } 
 

OK,其实这里面Dialog主要是怎样载入Layout中的模板,如果学会了这个,那随便什么样的内容或是模板都可以给Dialog来显示,总得来说Dialog还是比较方便的,这一章就结束了,谢谢

 

摘自:kangkangz4的专栏

相关TAG标签
上一篇:Android[初级教程]第十一章 TabHost控件
下一篇:Android[初级教程] 第九章 Gallery控件和ImageSwitcher控件
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站