Android小知识.docx
- 文档编号:7667049
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:46
- 大小:840.68KB
Android小知识.docx
《Android小知识.docx》由会员分享,可在线阅读,更多相关《Android小知识.docx(46页珍藏版)》请在冰豆网上搜索。
Android小知识
Android学习之路
2011-07-3112:
41:
10| 分类:
andriod| 标签:
android |字号大中小 订阅
很多童鞋在网上问我,Android应该怎么学,需要哪些基础,Android开发学习需要学习J2EE吗?
下面根据我的教学经验,推荐就业,学员面试的情况,给大家一些参考。
一、Android开发的分类:
1、Android客户端应用程序
如新浪微博、网银客户端、凡客、淘宝客户端,快盘客户端。
Android在这里的应用还是界面层的东西为主。
核心还在WEB。
客户端界面很重要,用户体验度很重要。
从应用需求上来讲,几乎大一点的网站,都需要有手机客户端程序。
2、Android通用类程序
如基于LBS(基于位置的服务)的应用 (这类一般会嵌入到客户端应用程序中),流媒体播放应用。
由于移动设备的方便便捷、3G、4G网络的发展,这类应用有不错的前景。
3、Android游戏开发
需要掌握的游戏引擎LGame,游戏框架等。
手机上的游戏会是一大块内容,有前途。
4、Android底层开发
需要掌握C、Linux等较底层的东西,发展方向应该是驱动、协议开发,嵌入式开发。
开始学习了解一般从界面、控件开始,这也是大部分人认为简单、比较快上手的原因。
学习一段时间后,自己可以定一个方向发展。
二、Android学习需要哪些知识点
1、Java基础知识
J2SE:
Java基础类(lang包,IO包,util包(集合框架),面向对象,多线程,网络编程)
2、J2EE知识
如果你想从事的Android客户端应用程序的开发,这部分知识是必备的。
显然Android客户端只是做的数据的请求、展现,所需的数据在服务器端。
技能点:
Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。
了解SSH。
3、Linux、C语言知识
可以作为你后续发展需要了解的。
在论坛上、QQ上看到不少童鞋Java基础还比较欠缺,就开始搞Android了,当然就问题多多。
学习热情可嘉,但需要打一个好的基础,有一个好的学习路线。
三、Android学习比较好的资料
1、应该说现在市面上的书,入门的还是不少,但一般现在只讲了简单控件的单个用法。
《Android开发范例大全》,《Android应用开发详解》可以参考。
想了解游戏的话,可以参考《Android2.0游戏开发实战宝典》。
2、Android学习视频,也基本上停留在讲简单入门,单个控件用法为主,这方面远不及Java,J2EE,SSH的视频那么丰富。
应该讲,你看完了这些,离开发还有很大一段距离。
而且,这些视频在讲课方法上不如一些Java的好。
现在的视频资料太丰富,从哈佛、斯坦福的课程,到IPHONE开发课程,都有。
但全部跟着视频完成所有的学习,有很长一段跟要走。
3、Android的论坛比较多,论坛的缺点就是什么东西得自己一个个查找、去等。
自学是一个艰苦而漫长的过程。
对你的锻炼和提升也最大。
自学有一个缺点,就是容易迷失方向,一个知识点你永远不知道要掌握多深,相关的应用是什么。
自学就好比像你一个人在走一条目标很远,前面叉路很多的暗道一样。
4、培训机构学习。
如果你时间上允许不失为一种好的选择,可以快速入门。
互联网产品(时代)有一个重要特点,就是拿资金换时间。
如果能快速入门,到这个行业去发展,就比自己慢慢学习要好得多。
毕竟现在Android开发太热了。
对开发人员的要求也会逐渐提高。
(如既要求能做Android开发,又做IPHONE移植开发)。
对培训机构的选择就比较重要了。
Android代码优化
2011-06-1323:
08:
20| 分类:
andriod| 标签:
android |字号大中小 订阅
Android代码优化原则:
∙不要做不必要的事件。
∙尽可能地节省内存的使用。
以下方法都是基于这个原则的。
1、尽可能避免创建对象
2、使用自身方法
如当处理字符串时,尽可能多使用诸如StringindexOf(),lastIndexOf()这样对象自身带有的方法。
3、使用实现类优于使用接口
如在Java编程中MapmyMap=newHashMap();对于嵌入式系统并不合适,通过接口来引调用会花2倍以上的时间。
写成HashMapmyMap=newHashMap()更好。
4、使用静态类优于使用虚拟
5、尽可以避免使用内在的get,set方法
6、缓冲属性调用
如:
for(inti=0;i dumpItem(this.mItems[i]); } 而是应该写成: intcount=this.mCount; Item[]items=this.mItems; for(inti=0;i dumpItems(items[i]); } 7、声明Final常量 8、慎重使用增强For循环语句 9、避免枚举类型 10、通过内部类使用包空间 11、避免浮点类型的使用 嵌入式的处理器通常并不支持浮点数的处理,因此所有的float和double操作都是通过软件进行的。 Drawable、Bitmap、Canvas和Paint的区别 2011-06-0115: 46: 42| 分类: andriod| 标签: android paint |字号大中小 订阅 很多朋友刚刚开始学习Android平台,对于Drawable、Bitmap、Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap、Canvas相关的都有所变化。 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口。 Bitmap-称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。 作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。 我们理解为一种存储对象比较好。 Drawable-作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。 Canvas-名为画布,我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。 Paint-我们可以把它看做一个画图工具,比如画笔、画刷。 他管理了每个画图工具的字体、颜色、样式。 如果涉及一些Android游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。 如在View中画一个图形: @Override protectedvoidonDraw(Canvascanvas){ //TODOAuto-generatedmethodstub super.onDraw(canvas); Paintpaint=newPaint(); paint.setColor(Color.RED); //直接画一条直线,简单 canvas.drawLine(0,0,50,50,paint); //加载图片资源文件 Resources r=this.getContext().getResources(); Drawabledrawale=r.getDrawable(R.drawable.yellowstar); //创建内存中的一张图片 Bitmapbitmap=Bitmap.createBitmap(12,12,Bitmap.Config.ARGB_8888); //图片画片 Canvascas=newCanvas(bitmap); drawale.setBounds(0,0,12,12); //图片加载到bitmap上 drawale.draw(cas); //画到View上 canvas.drawBitmap(bitmap,30,80,paint); } 继承View按键方法onKeyDown无反应 2011-05-3121: 13: 42| 分类: andriod| 标签: android view |字号大中小 订阅 重写按键方法onKeyDown,onKeyUp没有反应。 点击提示键以后出现以下信息: Nokeyboardforid0 调试信息也无法打印。 原因: View被显示时,没有获取焦点。 也就是说,按键动作没有发送给View,所以需要在构造方法中增加一行代码: setFocusable(true); Activity之间跳转与传值 2011-05-2123: 56: 56| 分类: andriod| 标签: android activity |字号大中小 订阅 一、Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。 最常见最一般的页面跳转代码,很简单,如下: Intentintent=newIntent(FirstActivity.this,SecondActivity.class); startActivity(intent); 或者: Intentintent=newIntent(); intent.setClass(FirstActivity.this,SecondActivity.class); startActivity(intent); 二、在跳转页面时还需要传递数据,这个时候如何做呢? 如果数据比较少,比如只要传一个名字,那么只要加一句"intent.putExtra("Name","ppy2790");"即可,代码如下: Intentintent=newIntent(); intent.setClass(FirstActivity.this,SecondActivity.class); intent.putExtra("Name","ppy2790"); startActivity(intent); 如果数据比较多,就需要使用Bundle类了,代码如下: Intentintent=newIntent(FirstActivity.this,SecondActivity.class); /*通过Bundle对象存储需要传递的数据*/ Bundlebundle=newBundle(); /*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/ bundle.putString("Name","ppy2790"); bundle.putBoolean("Ismale",true); /*把bundle对象assign给Intent*/ intent.putExtras(bundle); startActivity(intent); 三、在另一个Activity获取值 以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面SecondActivity上,应该如何接收数据呢? 在FirstActivity页面上是以Bundle封装了对象,自然在SecondActivity页面也是以Bundle的方式来解开封装的数据。 主要通过"getIntent().getExtras()"方法来获取Bundle,然后再从Bundle中获取数据。 也可以通过"this.getIntent().getStringExtra("Name");"方法直接从Intent中获取数据。 从Bundle获取数据的代码: @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); /*加载页面*/ setContentView(R.layout.main); /*获取Intent中的Bundle对象*/ Bundlebundle=this.getIntent().getExtras(); /*获取Bundle中的数据,注意类型和key*/ Stringname=bundle.getString("Name"); booleanismale=bundle.getBoolean("Ismale"); } 四、 有时,在页面跳转之后,需要返回到之前的页面,同时要保留用户之前输入的信息,这个时候该怎么办呢? 在页面跳转后,前一个Activity已经被destroy了。 如果要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。 要实现这个效果,需要做以下几步: 1.首先,从FirstActivity页面跳转到SecondActivity页面时,不可以使用"startActivity()"方法,而要使用"startActivityForResult"方法。 2.在FirstActivity页面的Activity中,需要重写"onActivityResult"方法 @Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ switch(requestCode){ caseRESULT_OK: /*取得来自SecondActivity页面的数据,并显示到画面*/ Bundlebundle=data.getExtras(); /*获取Bundle中的数据,注意类型和key*/ Stringname=bundle.getString("Name"); booleanismale=bundle.getBoolean("Ismale"); } } 在SecondActivity页面上加一个返回按钮,并在事件写如下代码: /*给上一个Activity返回结果*/ SecondActivity.this.setResult(RESULT_OK,intent); /*结束本Activity*/ SecondActivity.this.finish(); ppy2790@ 加博友 关注他 最新日志 ∙我是如何学习计算机编程的 ∙给年轻程序员的建议 ∙SDL_app: emulator.exe 应用 ∙javascript prototype属性使 ∙21个小故事 ∙JavaScript中事件处理 该作者的其他文章 博主推荐 相关日志 随机阅读 首页推荐 ∙韩国选美比赛中的性骚扰 ∙西游记中最不性福的神仙 ∙白领竟然背着切菜板上班 ∙灵肉交织的智力舞蹈(图) ∙国外生活最乱的是华人街 ∙老公旧情人送我情趣内衣 更多>> 对“推广广告”提建议 Intent调用系统中经常用到的组件 Activity之间跳转与传值 ListView优化 2011-05-1619: 46: 06| 分类: andriod| 标签: android listview |字号大中小 订阅 ListView的Adapter的作用如下图所示: Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View。 想过没有? 在我们的列表有1000000项时会是什么样的? 是不是会占用极大的系统资源? 先看看下面的代码: publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ Viewitem=mInflater.inflate(R.layout.list_item_icon_text,null); ((TextView)item.findViewById(R.id.text)).setText(DATA[position]);((ImageView)item.findViewById(R.id.icon)).setImageBitmap((position&1)==1? mIcon1: mIcon2); returnitem; } 怎么样? 如果超过1000000项时,后果不堪设想! 您可千万别这么写! 我们再来看看下面的代码: publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ if(convertView==null){ convertView=mInflater.inflate(R.layout.item,null); } ((TextView)convertView.findViewById(R.id.text)).setText(DATA[position]);((ImageView)convertView.findViewById(R.id.icon)).setImageBitmap((position&1)==1? mIcon1: mIcon2);returnconvertView; } 怎么样,上面的代码是不是好了很多? 系统将会减少创建很多View。 性能得到了很大的提升。 还有没有优化的方法呢? 答案是肯定的: publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder; if(convertView==null){ convertView=mInflater.inflate(R.layout.list_item_icon_text,null); holder=newViewHolder(); holder.text=(TextView)convertView.findViewById(R.id.text); holder.icon=(ImageView)convertView.findViewById(R.id.icon);convertView.setTag(holder); }else{ holder=(ViewHolder)convertView.getTag(); } holder.text.setText(DATA[position]); holder.icon.setImageBitmap((position&1)==1? mIcon1: mIcon2); returnconvertView; } staticclassViewHolder{ TextViewtext; ImageViewicon; } 怎么样? 会不会又给您的系统带来很大的提升呢? 看看下面三种方式的性能对比图您就知道了! 本文是GoogleI/O2009RomainGuy所讲的内容。 ppy2790@ 加博友 关注他 最新日志 ∙我是如何学习计算机编程的 ∙给年轻程序员的建议 ∙SDL_app: emulator.exe 应用 ∙javascript prototype属性使 ∙21个小故事 ∙JavaScript中事件处理 该作者的其他文章 博主推荐 相关日志 随机阅读 首页推荐 ∙白领竟然背着切菜板上班 ∙灵肉交织的智力舞蹈(图) ∙老公旧情人送我情趣内衣 ∙韩国选美比赛中的性骚扰 ∙国外生活最乱的是华人街 ∙西游记中最不性福的神仙 更多>> 对“推广广告”提建议 androidHandler ListView优化 Intent调用系统中经常用到的组件 2011-05-1422: 53: 31| 分类: andriod| 标签: android intent |字号大中小 订阅 1,web浏览器 Uriuri=Uri.parse(""); returnIt=newIntent(Intent.ACTION_VIEW,uri); 2,地图 UrimapUri=Uri.parse("geo: 38.899533,-77.036476"); returnIt=newIntent(Intent.ACTION_VIEW,mapUri); 3,调拨打电话界面 UritelUri=Uri.parse("tel: 100861"); returnIt=newIntent(Intent.ACTION_DIAL,telUri); 4,直接拨打电话 UricallUri=Uri.parse("tel: 100861"); returnIt=newIntent(Intent.ACTION_CALL,callUri); 5,卸载 UriuninstallUri=Uri.fromParts("package","xxx",null); returnIt=newIntent(Intent.ACTION_DELETE,uninstallUri); 6,安装 UriinstallUri=Uri.fromParts("package","xxx",null); returnIt=newIntent(Intent.ACTION_PACKAGE_ADDED,installUri); 7,播放 UriplayUri=Uri.parse("file: ///sdcard/download/everything.mp3"); returnIt=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 知识