在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Dialog 顯示圖像
Dialog 顯示圖像
線程 Bezier 曲線
創(chuàng)建應(yīng)用程序框架
引路蜂二維圖形庫簡介及顏色示例
Android 應(yīng)用基本概念
Intents 和 Intent Filters
安裝開發(fā)環(huán)境
Option Menu 畫筆示例
自定義對話框 Transform
數(shù)據(jù)綁定 Data Binding
概述
Broadcast Receiver 短信觸發(fā)示例
發(fā)布應(yīng)用
自定義 Adapter 顯示列表
RadioButton 多邊形及路徑繪制
訪問 Internet 繪製在線地圖
第一個應(yīng)用 Hello World
Activities
Button 畫刷示例
使用資源 Resources
Context Menu 繪制幾何圖形
用戶界面設(shè)計
引路蜂二維圖形繪制實例功能定義

Dialog 顯示圖像

Dialog 一般指可以顯示在 Activity 前面的小窗口,當(dāng)前的 Activity 失去焦點(Focus),Dialog 將接受用戶輸入,一般可以用來顯示消息或接受用戶輸入等等。使用 Dialog 時一般不需要直接創(chuàng)建 Dialog 類的實例。而是可以使用AlertDialog,ProgressDialog,DatePickerDialog,TimePickerDialog。最常用的是AlertDialog。下面就以使用 AlertDialog 為例,使用 AlertDialog 來選擇顯示圖像的三個例子:DrawMap, JumbleImage,SeeThroughImage。其中 DrawMap 暫時不介紹,將在后面介紹 Internet 應(yīng)用顯示在線地圖時再說。

通常 Dialog 是作為 Activity 一部分來創(chuàng)建的,也就是說在 Activity 的 onCreateDialog(int)中創(chuàng)建。當(dāng)在 onCreateDialog(int)創(chuàng)建 Dialog 時,Android 系統(tǒng)將自動管理 Dialog 的狀態(tài),并把當(dāng)前 Activity 作為 Dialog 的所有者。并且 Dialog 也繼承當(dāng)前 Activity 的一些屬性,比如說 Option Menu。

創(chuàng)建好 Dialog 后,可以使用 showDialog(int) 來顯示 Dialog ,showDialog 的參數(shù)為 Dialog的 ID。在顯示 Dialog 之前,如果想對 Dialog 做些改動,可以在 onPrepareDialog(int, Dialog) 添加代碼。dismiss()關(guān)閉對話框。如果在 Activity 中則使用 dismissDialog(int) 。

本例中使用一個按鈕來觸發(fā) Dialog,在 res\layout 在添加 images.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”[http://schemas.android.com/apk/res/android](http://schemas.android.com/apk/res/android)”
    android:orientation=”vertical”
    android:background=”@drawable/white”
 android:layout_width=”fill_parent”
 android:layout_height=”fill_parent”>
    <com.pstreets.graphics2d.GuidebeeGraphics2DView
     android:id=”@+id/graphics2dview”
     android:layout_weight=”1″
     android:layout_width=”fill_parent”
     android:layout_height=”wrap_content”/>
 <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
  android:layout_width=”wrap_content” android:layout_height=”wrap_content”
  android:orientation=”horizontal”

  >

   <Button android:text=”Images”
       android:id=”@+id/btnImages”
    android:layout_width=”wrap_content”
    android:textColor=”@color/black”
    android:checked=”true”
    android:layout_height=”wrap_content”>
   </Button>

 </LinearLayout>

</LinearLayout>

修改 Image.java

public class Images extends Graphics2DActivity
implements OnClickListener{

 private Button btnImages;
 private int[] imageDuke;

 static final private int IMAGE_DIALOG=1;

 int w, h;
    int offX, offY;

 int alpha = 128;
 FontEx font = FontEx.getSystemFont();
    int fontSize = 24;
    Pen pen = new Pen(Color.RED, 2);
    char[] message = "Guidebee".toCharArray();
    int widthOfMessage = 0;

    private int numlocs = 2;
    private int numcells = numlocs * numlocs;
    private int[] cells;
    int  cw, ch;

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.images);
  graphic2dView = (GuidebeeGraphics2DView)
      findViewById(R.id.graphics2dview);
  btnImages = (Button) findViewById(R.id.btnImages);
  btnImages.setOnClickListener(this);
  Bitmap bitmap
    = BitmapFactory.decodeResource(getResources(),
    R.drawable.duke_skateboard);
  imageDuke = new int[bitmap.getHeight()
                          * bitmap.getWidth()];
  bitmap.getPixels(imageDuke, 0, bitmap.getWidth(), 0, 0,
    bitmap.getWidth(), bitmap.getHeight());
  widthOfMessage = font.charsWidth(message, 0,
    message.length, fontSize);
  w=bitmap.getWidth();
     h=bitmap.getHeight();
        offX = (SharedGraphics2DInstance.CANVAS_WIDTH - w) / 2;
        offY = (SharedGraphics2DInstance.CANVAS_HEIGHT - h) / 2;

        cw = w / numlocs;
        ch = h / numlocs;
        cells = new int[numcells];
        for (int i = 0; i < numcells; i++) {
            cells[i] = i;
        }

 }

 private void drawJumbleImage(){
  Random rand = new Random();
        int ri;
        for (int i = 0; i < numcells; i++) {
            while ((ri = rand.nextInt(numlocs)) == i) {
            }

            int tmp = cells[i];
            cells[i] = cells[ri];
            cells[ri] = tmp;
        }
        graphics2D.clear(Color.WHITE);
        graphics2D.Reset();

        int dx, dy;
        for (int x = 0; x < numlocs; x++) {
            int sx = x * cw;
            for (int y = 0; y < numlocs; y++) {
                int sy = y * ch;
                int cell = cells[x * numlocs + y];
                dx = (cell / numlocs) * cw;
                dy = (cell % numlocs) * ch;
                graphics2D.drawImage(imageDuke, w, h,
                        dx + offX, dy + offY,
                        sx, sy, cw, ch);
            }
        }

        graphic2dView.refreshCanvas();
 }

 private void drawSeeThroughImage(){
  alpha += 16;
  if(alpha>255) alpha=0;
  graphics2D.clear(Color.WHITE);
  graphics2D.Reset();
  graphics2D.setDefaultPen(pen);
        graphics2D.drawChars(font, fontSize, message,
          0, message.length, offX
                + (w - widthOfMessage) / 2, offY + h / 2);
        graphics2D.drawImage(imageDuke, w, h,
                offX, offY,
                0xFFFF00FF, alpha);
        graphic2dView.refreshCanvas();
 }

 protected Dialog onCreateDialog(int id) {   
  Dialog dialog;   
  switch(id) {   
     case IMAGE_DIALOG:     
      final CharSequence[] items = {"DrawMap",
        "JumbleImage","SeeThroughImage"};
      AlertDialog.Builder builder
      = new AlertDialog.Builder(this);
      builder.setTitle("Images");
      builder.setSingleChoiceItems(items,
        -1, new DialogInterface.OnClickListener() {   
            public void onClick(DialogInterface dialog,
              int item) {       
               switch(item){
               case 0:

                break;
               case 1:
                drawJumbleImage();
                break;
               case 2:
                drawSeeThroughImage();
                break;

               }
               dialog.dismiss();
           }
           });
           AlertDialog alert = builder.create();
         dialog=alert;
         break;       
           default:       
            dialog = null;  
         } 
     return dialog;
  }

 @Override
 protected void drawImage() {
  drawJumbleImage();

 }

 @Override
 public void onClick(View view) {
  showDialog(IMAGE_DIALOG);

 }

}

從代碼中看到,Dialog 是通過 AlertDialog.Builder 來創(chuàng)建的,這里 Dialog 顯示了三個選項,通過 builder.setSingleChoiceItems 添加處理事件。實際 AlertDialog 可以有多種選項,具體請參考 Android AlertDialog 文檔。

http://wiki.jikexueyuan.com/project/android-development-tutorial/images/27.png" alt="" />