Android开发中Dialog怎么显示图像(android开发,dialog,移动开发)

时间:2024-05-09 14:32:52 作者 : 石家庄SEO 分类 : 移动开发
  • TAG :

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

<?xmlversion=”1.0&Prime;encoding=”utf-8&Prime;?><LinearLayoutxmlns: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.GuidebeeGraphics2DViewandroid:id=”@+id/graphics2dview”android:layout_weight=”1&Prime;android:layout_width=”fill_parent”android:layout_height=”wrap_content”/><LinearLayoutxmlns:android=”http://schemas.android.com/apk/res/android”android:layout_width=”wrap_content”android:layout_height=”wrap_content”android:orientation=”horizontal”><Buttonandroid: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

publicclassImagesextendsGraphics2DActivityimplementsOnClickListener{privateButtonbtnImages;privateint[]imageDuke;staticfinalprivateintIMAGE_DIALOG=1;intw,h;intoffX,offY;intalpha=128;FontExfont=FontEx.getSystemFont();intfontSize=24;Penpen=newPen(Color.RED,2);char[]message="Guidebee".toCharArray();intwidthOfMessage=0;privateintnumlocs=2;privateintnumcells=numlocs*numlocs;privateint[]cells;intcw,ch;publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.images);graphic2dView=(GuidebeeGraphics2DView)findViewById(R.id.graphics2dview);btnImages=(Button)findViewById(R.id.btnImages);btnImages.setOnClickListener(this);Bitmapbitmap=BitmapFactory.decodeResource(getResources(),R.drawable.duke_skateboard);imageDuke=newint[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=newint[numcells];for(inti=0;i<numcells;i++){cells[i]=i;}}privatevoiddrawJumbleImage(){Randomrand=newRandom();intri;for(inti=0;i<numcells;i++){while((ri=rand.nextInt(numlocs))==i){}inttmp=cells[i];cells[i]=cells[ri];cells[ri]=tmp;}graphics2D.clear(Color.WHITE);graphics2D.Reset();intdx,dy;for(intx=0;x<numlocs;x++){intsx=x*cw;for(inty=0;y<numlocs;y++){intsy=y*ch;intcell=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();}privatevoiddrawSeeThroughImage(){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();}protectedDialogonCreateDialog(intid){Dialogdialog;switch(id){caseIMAGE_DIALOG:finalCharSequence[]items={"DrawMap","JumbleImage","SeeThroughImage"};AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle("Images");builder.setSingleChoiceItems(items,-1,newDialogInterface.OnClickListener(){publicvoidonClick(DialogInterfacedialog,intitem){switch(item){case0:break;case1:drawJumbleImage();break;case2:drawSeeThroughImage();break;}dialog.dismiss();}});AlertDialogalert=builder.create();dialog=alert;break;default:dialog=null;}returndialog;}@OverrideprotectedvoiddrawImage(){drawJumbleImage();}@OverridepublicvoidonClick(Viewview){showDialog(IMAGE_DIALOG);}}

从代码中看到,Dialog是通过AlertDialog.Builder 来创建的,这里Dialog显示了三个选项,通过builder.setSingleChoiceItems添加处理事件。实际AlertDialog可以有多种选项,具体请参考Android AlertDialog 文档。

Android开发中Dialog怎么显示图像

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Android开发中Dialog怎么显示图像的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Windows上安装PHP7的操作步骤下一篇:

10 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18