Android[初級教程]第十章 AlertDialog控制項

來源:互聯網
上載者:User

 這次我們來學習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的專欄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.