真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

安卓應用-自定義對話框

現(xiàn)在要說的是自定義對話框。

成都創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務器托管報價,主機托管價格性價比高,為金融證券行業(yè)成都機柜租用,ai人工智能服務器托管提供bgp線路100M獨享,G口帶寬及機柜租用的專業(yè)成都idc公司。

常用的對話框有好多網(wǎng)友們整理的資料,對話框大全啊神馬的。但是除了常用對話框外,有時候要根據(jù)自己的需求定義新的對話框,下面就稍微說一下自定義對話框的一種做法。

1、需要一個對話框內(nèi)容的xml配置文件game_dialog.xml,這個應該不需要過多解釋,基本布局而已。

有幾個圖片按鈕,所以在drawable下面放幾張圖,嫌麻煩的話,也可以用Button替換,看下效果。

需要說明的是,所有控件的id這里我都用的@id,因為id我都寫在了res/values/ids.xml里面,如果不這樣做的話要用@+id,不過不好管理,雖然我在代碼管理這塊做的并不是特別好,但是盡量盡我所能讓他們看起來干凈清晰簡潔明了,也會做一些注釋,以后回來看或者做改動也會舒心一點。



    

    

        

        
        
        
    

ids.xml如下:



        
        
        
        
        

2、在res/values下的styles.xml中添加如下內(nèi)容,定義一個名為GameDialog的style,然后設置一些item,基本看意思就能明白,其中android:windowBackground的值可以使用一張圖片,也可以使用一個xml文件做配置,用xml會稍微美觀一點,用圖片的話,我目前還不太會找圖,不知道怎么搭配好看。下面也附上我用的shape.xml的源碼。

    
        @null
        true
        @drawable/shape
        true
        true
        @null
        false
    

shap.xml如下:



  
    
    
    

3、定義一個類繼承自Dialog并實現(xiàn)OnClickListener接口,使用setContentview加載視圖,用findViewById獲取對話框中的View對象實例(不知道這樣說對不對啊?),和我們平時使用一樣,可以為他們設置監(jiān)聽事件。

需要說一下的是這兩句:

this.setCancelable(false);

見名知意,就是屏蔽掉按返回鍵關閉對話框,有時候會有這種需要,強制要求必須做一個選擇。

this.dismiss();

這個是關閉掉對話框的。

以下是GameDialog的源代碼:

package com.test.leetledialog;

import android.app.Dialog;
import android.content.Context;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

/**
 * 自定義消息通知對話框 
 * @author Leetle
 * 
 */
public class GameDialog extends Dialog implements
		android.view.View.OnClickListener {

	private TextView gd_message;
	private ImageButton gd_next;
	private ImageButton gd_replay;
	private ImageButton gd_continue;
	private ImageButton gd_quit;

	public GameDialog(Context context, String message) {

		super(context, R.style.GameDialog);
		setContentView(R.layout.game_dialog);

		gd_message = (TextView) findViewById(R.id.id_dialog_message);
		gd_next = (ImageButton) findViewById(R.id.id_dialog_next);
		gd_continue = (ImageButton) findViewById(R.id.id_dialog_continue);
		gd_replay = (ImageButton) findViewById(R.id.id_dialog_replay);
		gd_quit = (ImageButton) findViewById(R.id.id_dialog_quit);

		// 設置提示消息
		gd_message.setText(message);
		// 設置按鈕監(jiān)聽
		gd_next.setOnClickListener(this);
		gd_quit.setOnClickListener(this);
		gd_continue.setOnClickListener(this);
		gd_replay.setOnClickListener(this);
		// 設置不能通過返回鍵取消
		this.setCancelable(false);

	}

	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.id_dialog_next: {
			System.out.println("GameDialog next");
			this.dismiss();
			break;
		}
		case R.id.id_dialog_continue: {
			System.out.println("GameDialog continue");
			this.dismiss();
			break;
		}
		case R.id.id_dialog_replay: {
			System.out.println("GameDialog replay");
			this.dismiss();
			break;
		}
		case R.id.id_dialog_quit: {
			System.out.println("GameDialog quit");
			this.dismiss();
			break;
		}
		default: {
		}
		}
	}
}

4、在MainActivity中打開一個窗口

package com.test.leetledialog;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //new一個GameDialog
        GameDialog gameDialog;
        gameDialog = new GameDialog(MainActivity.this,"看我看我快看我");
	gameDialog.show();
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

歐了,運行結(jié)果如下圖。話說這個代碼不能折疊么?

安卓應用-自定義對話框

安卓應用-自定義對話框結(jié)束!

2014.12.30


本文標題:安卓應用-自定義對話框
文章鏈接:http://weahome.cn/article/ieieis.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部