這期內容當中小編將會給大家帶來有關Android開發中Dialog怎么顯示圖像,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Dialog一般指可以顯示在Activity前面的小窗口,當前的Activity失去焦點(Focus),Dialog將接受用戶輸入,一般可 以用來顯示消息或接受用戶輸入等等。使用Dialog時一般不需要直接創建Dialog類的實例。而是可以使用 AlertDialog,ProgressDialog,DatePickerDialog,TimePickerDialog。最常用的是 AlertDialog。下面就以使用AlertDialog為例,使用AlertDialog來選擇顯示圖像的三個例子:DrawMap, JumbleImage,SeeThroughImage。其中DrawMap暫時不介紹,將在后面介紹Internet應用顯示在線地圖時再說。
通常Dialog是作為Activity一部分來創建的,也就是說在Activity的onCreateDialog(int)中創建。當在 onCreateDialog(int)創建Dialog時,Android系統將自動管理Dialog的狀態,并把當前Activity作為 Dialog的所有者。并且Dialog也繼承當前Activity的一些屬性,比如說Option Menu。
創建好Dialog后,可以使用showDialog(int) 來顯示Dialog ,showDialog的參數為Dialog的ID。在顯示Dialog之前,如果想對Dialog做些改動,可以 在 onPrepareDialog(int, Dialog) 添加代碼。dismiss()關閉對話框。如果在Activity中則使用dismissDialog(int) 。
本例中使用一個按鈕來觸發Dialog,在res\layout 在添加images.xml
<?xml version=”1.0″ encoding=”utf-8″?> <LinearLayout xmlns: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 來創建的,這里Dialog顯示了三個選項,通過builder.setSingleChoiceItems添加處理事件。實際AlertDialog可以有多種選項,具體請參考Android AlertDialog 文檔。

上述就是小編為大家分享的Android開發中Dialog怎么顯示圖像了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。