《Android软件开发-[整 .pdf》由会员分享,可在线阅读,更多相关《Android软件开发-[整 .pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Android 软件开发Android 软件开发之盘点所有Dialog 对话框大合集(一)今天我用自己写的一个Demo 和大家详细介绍一个Android中的对话框的使用技巧。1.确定取消对话框对话框中有2 个按钮通过调用 setPositiveButton 方法和 setNegativeButton 方法可以设置按钮的显示内容以及按钮的监听事件。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 40 页 -我们使用AlerDialog 创建对话框AlertDialog.Builder builder=new AlertDialog.Builder(MainDialog.this);
2、使用 builder设置对话框的title button icon 等等builder.setIcon(R.drawable.icon);builder.setTitle(你确定要离开吗?);builder.setPositiveButton(确定,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)/这里添加点击确定后的逻辑名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 40 页 -showDialog(你选择了确定););builder.setN
3、egativeButton(取消,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)/这里添加点击确定后的逻辑showDialog(你选择了取消););builder.create().show();这个 dialog用于现实 onClick后监听的内容信息privatevoidshowDialog(String str)w AlertDialog.Builder(MainDialog.this).setMessage(str).show();2.多个按钮信息框
4、名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 40 页 -名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 40 页 -AlertDialog.Builder builder=newAlertDialog.Builder(MainDialog.this);builder.setIcon(R.drawable.icon);builder.setTitle(投票);builder.setMessage(您认为什么样的内容能吸引您?);builder.setPositiveButton(有趣味的 ,newDialogInterface.OnClickListener()p
5、ublicvoidonClick(DialogInterface dialog,intwhichButton)showDialog(你选择了有趣味的);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 40 页 -);builder.setNeutralButton(有思想的,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)showDialog(你选择了有思想的););builder.setNegativeButton(主题强的 ,newDialo
6、gInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)showDialog(你选择了主题强的););builder.create().show();3.列表框名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 40 页 -这个数组用于列表选择final String mItems=item0,item1,itme2,item3,itme4,item5,item6;AlertDialog.Builder builder=newAlertDialog.Builder(Main
7、Dialog.this);builder.setTitle(列表选择框);builder.setItems(mItems,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhich)/点击后弹出窗口选择了第几项showDialog(你选择的 id 为+which+,+mItemswhich);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 40 页 -);builder.create().show();4.单项选择列表框名师资料总结-精品资料欢迎下载-名师精心整理-第
8、8 页,共 40 页 -mSingleChoice 用于记录单选中的ID int mSingleChoiceID=-1;AlertDialog.Builder builder=newAlertDialog.Builder(MainDialog.this);mSingleChoiceID=-1;builder.setIcon(R.drawable.icon);builder.setTitle(单项选择);builder.setSingleChoiceItems(mItems,0,newDialogInterface.OnClickListener()publicvoidonClick(Dialo
9、gInterface dialog,intwhichButton)名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 40 页 -mSingleChoiceID=whichButton;showDialog(你选择的 id 为+whichButton+,+mItemswhichButton););builder.setPositiveButton(确定 ,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)if(mSingleChoiceID 0)sho
10、wDialog(你选择的是+mSingleChoiceID););builder.setNegativeButton(取消 ,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton);builder.create().show();5.进度条框名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 40 页 -点击进度条框按钮后开启一个线程计算读取的进度假设读取结束为 100Progress在小于 100 的时候一直在线程中做循环+只到读取结束后,停止线程。m
11、ProgressDialog=newProgressDialog(MainDialog.this);mProgressDialog.setIcon(R.drawable.icon);mProgressDialog.setTitle(进度条窗口 );mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);mProgressDialog.setMax(MAX_PROGRESS);mProgressDialog.setButton(确定,newDialogInterface.OnClickListener()publicvo
12、idonClick(DialogInterface dialog,intwhichButton)名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 40 页 -/这里添加点击后的逻辑);mProgressDialog.setButton2(取消 ,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)/这里添加点击后的逻辑);mProgressDialog.show();newThread(this).start();ic voidrun()intPro
13、gress=0;while(Progress MAX_PROGRESS)try Thread.sleep(100);Progress+;mProgressDialog.incrementProgressBy(1);catch(InterruptedException e)/TODO Auto-generated catch blocke.printStackTrace();名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 40 页 -6.多项选择列表框名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 40 页 -MultiChoiceID 用于记录多选选中的id 号
14、 存在 ArrayList中选中后 add 进 ArrayList 取消选中后 remove 出 ArrayList。ArrayList MultiChoiceID=new ArrayList();AlertDialog.Builder builder=newAlertDialog.Builder(MainDialog.this);MultiChoiceID.clear();builder.setIcon(R.drawable.icon);builder.setTitle(多项选择);builder.setMultiChoiceItems(mItems,名师资料总结-精品资料欢迎下载-名师精心
15、整理-第 14 页,共 40 页 -newboolean false,false,false,false,false,false,false,newDialogInterface.OnMultiChoiceClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton,booleanisChecked)if(isChecked)MultiChoiceID.add(whichButton);showDialog(你选择的id 为+whichButton+,+mItemswhichButton);else MultiCh
16、oiceID.remove(whichButton););builder.setPositiveButton(确定 ,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)String str=;intsize=MultiChoiceID.size();for(inti=0;i size;i+)str+=mItemsMultiChoiceID.get(i)+,;showDialog(你选择的是+str););名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页
17、,共 40 页 -builder.setNegativeButton(取消 ,newDialogInterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton);builder.create().show();7.自定义布局讲到自定义布局我就得多说一说了,为什么要多说一说呢?其实自定义布局在Android 的开发中非常重要因为它能让开发者做出自己五彩缤纷的Activity 而不用去使用系统枯燥的界面。名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 40 页 -自定义 dialo
18、g有什么好处?比如我们在开发过长当中要通过介绍系统发送的一个广播弹出一个dialog.但是 dialog必需是基于activity才能呈现出来如果没有 activity 的话 程序就会崩溃。所以我们可以写一个自定义的 dialog 把它定义成一个activity这样我们收到一条打开dialog的广播后直接启动这个 activity 程序正常运行 这就是自定义dialog的好处。注明:下面这个例子只是写了自定义dialog 没有把它单独的写在一个activity中 如果须要的话可以自己改一下。AlertDialog.Builder builder=newAlertDialog.Builder(M
19、ainDialog.this);LayoutInflater factory=LayoutInflater.from(this);finalView textEntryView=factory.inflate(R.layout.test,null);builder.setIcon(R.drawable.icon);builder.setTitle(自定义输入框 );builder.setView(textEntryView);builder.setPositiveButton(确定,newDialogInterface.OnClickListener()publicvoidonClick(Di
20、alogInterface dialog,intwhichButton)EditText userName=(EditText)textEntryView.findViewById(R.id.etUserName);EditText password=(EditText)textEntryView.findViewById(R.id.etPassWord);showDialog(姓名:+userName.getText().toString()+密码:+password.getText().toString(););builder.setNegativeButton(取消,newDialogI
21、nterface.OnClickListener()publicvoidonClick(DialogInterface dialog,intwhichButton)名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 40 页 -);builder.create().show();8.读取进度框显示一个正在转圈的进度条loading mProgressDialog=newProgressDialog(this);mProgressDialog.setTitle(读取 ing);mProgressDialog.setMessage(正在读取中请稍候);mProgressDialog.s
22、etIndeterminate(true);mProgressDialog.setCancelable(true);名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 40 页 -mProgressDialog.show();最后如果你还是觉得我写的不够详细不要紧我把源代码的下载地址贴出来欢迎大家一起讨论学习雨松 MOMO 希望可以和大家一起进步。名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 40 页 -Android 软件开发之盘点自定义View 界面大合集(二)发布于 2011-10-08 今天我用自己写的一个Demo 和大家详细介绍一个Android 中自定
23、义View 中的使用与绘制技巧。1.自定义 view 绘制字符串相信在实际开发过程中必然很多地方都须要用到系统字为什么会用到系统字?方便省内存我相信做过J2ME游戏开发的朋友应该深知内存有多么多么重要而且使用它还可以带来一个更重要的好处就是很方便的可以实现多国语言的切换笔者现在在正在做的一个产品就是可以多语言切换的软件有英语繁体中文等等设想如果使用图片字的话那每个语言都须要出一套图,我用一个例子简单介绍一下绘制字符串。名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 40 页 -packagecn.m15.xys;importandroid.app.Activity;import
24、android.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Paint.FontMetrics;importandroid.os.Bundle;名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 40 页 -importandroid.view.Display;importandroid.view.View;publicclassFont extendsActivity pu
25、blicintmScreenWidth=0;publicintmScreenHeight=0;OverrideprotectedvoidonCreate(Bundle savedInstanceState)setContentView(newFontView(this);/获取屏幕宽高Display display=getWindowManager().getDefaultDisplay();mScreenWidth=display.getWidth();mScreenHeight=display.getHeight();super.onCreate(savedInstanceState);c
26、lassFontView extendsView publicfinalstaticString STR_WIDTH=获取字符串宽为:;publicfinalstaticString STR_HEIGHT=获取字体高度为:;Paint mPaint=null;publicFontView(Context context)super(context);mPaint=newPaint();Override名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 40 页 -protectedvoidonDraw(Canvas canvas)/设置字符串颜色mPaint.setColor(Co
27、lor.WHITE);canvas.drawText(当前屏幕宽+mScreenWidth,0,30,mPaint);canvas.drawText(当前屏幕高 +mScreenHeight,0,60,mPaint);/设置字体大小mPaint.setColor(Color.RED);mPaint.setTextSize(18);canvas.drawText(字体大小为18,0,90,mPaint);/消除字体锯齿mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);canvas.drawText(消除字体锯齿后,0,120,mPaint);/获取字符串宽度canva
28、s.drawText(STR_WIDTH+getStringWidth(STR_WIDTH),0,150,mPaint);/获取字体高度canvas.drawText(STR_HEIGHT+getFontHeight(),0,180,mPaint);/从 string.xml读取字符串绘制mPaint.setColor(Color.YELLOW);canvas.drawText(getResources().getString(R.string.string_font),0,210,mPaint);super.onDraw(canvas);/*获取字符串宽名师资料总结-精品资料欢迎下载-名师精
29、心整理-第 24 页,共 40 页 -*param str*return*/privateintgetStringWidth(String str)return(int)mPaint.measureText(STR_WIDTH);/*获取字体高度*/privateintgetFontHeight()FontMetrics fm=mPaint.getFontMetrics();return(int)Math.ceil(fm.descent-fm.top)+2;2.绘制无规则几何图形绘制无规则几何图形似乎在实际工作中很少可以用到原因是用程序去绘制图形即使在精准再好看也不会有美术出的图片好看但是使用
30、程序绘制图形作为学习来说却是基础中的基础,所以建议大家都看一看。名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 40 页 -packagecn.m15.xys;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importandroid.graphics.Paint;importandroid.graphics.Path;importandroid.graphics.RectF;名师资料总结-精品资
31、料欢迎下载-名师精心整理-第 26 页,共 40 页 -importandroid.os.Bundle;importandroid.view.View;publicclassGeometry extendsActivity publicintmScreenWidth=0;publicintmScreenHeight=0;OverrideprotectedvoidonCreate(Bundle savedInstanceState)setContentView(newGeometryView(this);super.onCreate(savedInstanceState);classGeomet
32、ryView extendsView Paint mPaint=null;publicGeometryView(Context context)super(context);mPaint=newPaint();mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);OverrideprotectedvoidonDraw(Canvas canvas)super.onDraw(canvas);/设置画布颜色也就是背景颜色canvas.drawColor(Color.WHITE);mPaint.setColor(Color.BLACK);名师资料总结-精品资料欢迎下载-名师精心
33、整理-第 27 页,共 40 页 -canvas.drawText(绘制无规则几何图形喔!,150,30,mPaint);/绘制一条线mPaint.setColor(Color.BLACK);mPaint.setStrokeWidth(4);canvas.drawLine(0,0,100,100,mPaint);/绘制一个矩形mPaint.setColor(Color.YELLOW);canvas.drawRect(0,120,100,200,mPaint);/绘制一个圆形mPaint.setColor(Color.BLUE);canvas.drawCircle(80,300,50,mPain
34、t);/绘制一个椭圆mPaint.setColor(Color.CYAN);canvas.drawOval(newRectF(300,370,120,100),mPaint);/绘制多边形mPaint.setColor(Color.BLACK);Path path=newPath();path.moveTo(150+5,400-50);path.lineTo(150+45,400-50);path.lineTo(150+30,460-50);path.lineTo(150+20,460-50);path.close();canvas.drawPath(path,mPaint);名师资料总结-精
35、品资料欢迎下载-名师精心整理-第 28 页,共 40 页 -3.图片的绘制以及旋转缩放的实现在这点上Android 确实比 J2ME 强大很多手机游戏开发最痛苦的是什么?是游戏引擎的开发,但是工程师会把大部分时间浪费在对坐标上,如果写引擎的时候没有把自适应考虑周全后期会非常痛苦,现在手机屏幕分辨率是各式各样内存大小也是各式各样所以可见自适应屏幕算法有多么的重要。packagecn.m15.xys;importandroid.app.Activity;名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 40 页 -importandroid.content.Context;impor
36、tandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Matrix;importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.LinearLayout
37、;publicclassImage extendsActivity ImageView imageView=null;OverrideprotectedvoidonCreate(Bundle savedInstanceState)imageView=newImageView(this);setContentView(R.layout.image);LinearLayout ll=(LinearLayout)findViewById(R.id.iamgeid);ll.addView(imageView);/向左移动Button botton0=(Button)findViewById(R.id.
38、buttonLeft);botton0.setOnClickListener(newOnClickListener()Override名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 40 页 -publicvoidonClick(View arg0)imageView.setPosLeft(););/向右移动Button botton1=(Button)findViewById(R.id.buttonRight);botton1.setOnClickListener(newOnClickListener()OverridepublicvoidonClick(View arg0)
39、imageView.setPosRight(););/左旋转Button botton2=(Button)findViewById(R.id.buttonRotationLeft);botton2.setOnClickListener(newOnClickListener()OverridepublicvoidonClick(View arg0)imageView.setRotationLeft(););/右旋转Button botton3=(Button)findViewById(R.id.buttonRotationRight);botton3.setOnClickListener(new
40、OnClickListener()名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 40 页 -OverridepublicvoidonClick(View arg0)imageView.setRotationRight(););/缩小Button botton4=(Button)findViewById(R.id.buttonNarrow);botton4.setOnClickListener(newOnClickListener()OverridepublicvoidonClick(View arg0)imageView.setNarrow(););/放大Button bot
41、ton5=(Button)findViewById(R.id.buttonEnlarge);botton5.setOnClickListener(newOnClickListener()OverridepublicvoidonClick(View arg0)imageView.setEnlarge(););super.onCreate(savedInstanceState);名师资料总结-精品资料欢迎下载-名师精心整理-第 32 页,共 40 页 -classImageView extendsView Paint mPaint=null;Bitmap bitMap=null;Bitmap bi
42、tMapDisplay=null;intm_posX=120;intm_posY=50;intm_bitMapWidth=0;intm_bitMapHeight=0;Matrix mMatrix=null;floatmAngle=0.0f;floatmScale=1f;/1为原图的大小publicImageView(Context context)super(context);mPaint=newPaint();mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);bitMap=BitmapFactory.decodeResource(this.getResources
43、(),R.drawable.image);bitMapDisplay=bitMap;mMatrix=newMatrix();/获取图片宽高m_bitMapWidth=bitMap.getWidth();m_bitMapHeight=bitMap.getHeight();名师资料总结-精品资料欢迎下载-名师精心整理-第 33 页,共 40 页 -/向左移动publicvoidsetPosLeft()m_posX-=10;/向右移动publicvoidsetPosRight()m_posX+=10;/向左旋转publicvoidsetRotationLeft()mAngle-;setAngle()
44、;/向右旋转publicvoidsetRotationRight()mAngle+;setAngle();/缩小图片publicvoidsetNarrow()if(mScale 0.5)mScale-=0.1;setScale();名师资料总结-精品资料欢迎下载-名师精心整理-第 34 页,共 40 页 -/放大图片publicvoidsetEnlarge()if(mScale 2)mScale+=0.1;setScale();/设置缩放比例publicvoidsetAngle()mMatrix.reset();mMatrix.setRotate(mAngle);bitMapDisplay=B
45、itmap.createBitmap(bitMap,0,0,m_bitMapWidth,m_bitMapHeight,mMatrix,true);/设置旋转比例publicvoidsetScale()mMatrix.reset();/float sx X轴缩放/float sy Y轴缩放mMatrix.postScale(mScale,mScale);bitMapDisplay=Bitmap.createBitmap(bitMap,0,0,m_bitMapWidth,名师资料总结-精品资料欢迎下载-名师精心整理-第 35 页,共 40 页 -m_bitMapHeight,mMatrix,tru
46、e);OverrideprotectedvoidonDraw(Canvas canvas)super.onDraw(canvas);canvas.drawBitmap(bitMapDisplay,m_posX,m_posY,mPaint);invalidate();4.播放 frame 动画做游戏的话播放动画可就是必不可少的元素帧动画帧动画顾名思义是一帧一帧的播放。实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器这个 demo我只给大家简单的介绍一下播放动画的原理后期我
47、会深入讲解。名师资料总结-精品资料欢迎下载-名师精心整理-第 37 页,共 40 页 -如图所示这个小人一直在行走实际上是 4 张图片在来回切换每张图片延迟500 毫秒后播下一张以此类推。packagecn.m15.xys;importandroid.app.Activity;importandroid.content.Context;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.graphics.Canvas;importandroid.graphics.Color;名师资料总
48、结-精品资料欢迎下载-名师精心整理-第 38 页,共 40 页 -importandroid.graphics.Paint;importandroid.os.Bundle;importandroid.view.View;publicclassFramAnimation extendsActivity publicfinalstaticintANIM_COUNT=4;OverrideprotectedvoidonCreate(Bundle savedInstanceState)setContentView(newFramView(this);super.onCreate(savedInstanc
49、eState);classFramView extendsView Bitmap bitmap=newBitmapANIM_COUNT;Bitmap display=null;Paint paint=null;longstartTime=0;intplayID=0;publicFramView(Context context)super(context);for(inti=0;i=500)startTime=nowTime;playID+;if(playID=ANIM_COUNT)playID=0;canvas.drawBitmap(bitmapplayID,100,100,paint);invalidate();名师资料总结-精品资料欢迎下载-名师精心整理-第 40 页,共 40 页 -