Android小知识文档格式.docx
《Android小知识文档格式.docx》由会员分享,可在线阅读,更多相关《Android小知识文档格式.docx(46页珍藏版)》请在冰豆网上搜索。
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|
Android代码优化原则:
∙不要做不必要的事件。
∙尽可能地节省内存的使用。
以下方法都是基于这个原则的。
1、尽可能避免创建对象
2、使用自身方法
如当处理字符串时,尽可能多使用诸如StringindexOf(),lastIndexOf()这样对象自身带有的方法。
3、使用实现类优于使用接口
如在Java编程中MapmyMap=newHashMap();
对于嵌入式系统并不合适,通过接口来引调用会花2倍以上的时间。
写成HashMapmyMap=newHashMap()更好。
4、使用静态类优于使用虚拟
5、尽可以避免使用内在的get,set方法
6、缓冲属性调用
如:
for(inti=0;
i<
this.mCount;
i++){
dumpItem(this.mItems[i]);
}
而是应该写成:
intcount=this.mCount;
Item[]items=this.mItems;
i<
count;
dumpItems(items[i]);
7、声明Final常量
8、慎重使用增强For循环语句
9、避免枚举类型
10、通过内部类使用包空间
11、避免浮点类型的使用
嵌入式的处理器通常并不支持浮点数的处理,因此所有的float和double操作都是通过软件进行的。
Drawable、Bitmap、Canvas和Paint的区别
2011-06-0115:
46:
42|
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:
view
重写按键方法onKeyDown,onKeyUp没有反应。
点击提示键以后出现以下信息:
Nokeyboardforid0
调试信息也无法打印。
原因:
View被显示时,没有获取焦点。
也就是说,按键动作没有发送给View,所以需要在构造方法中增加一行代码:
setFocusable(true);
Activity之间跳转与传值
2011-05-2123:
56:
56|
activity
一、Activity跳转与传值,主要是通过Intent类来连接多个Activity,通过Bundle类来传递数据。
最常见最一般的页面跳转代码,很简单,如下:
Intentintent=newIntent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
或者:
Intentintent=newIntent();
intent.setClass(FirstActivity.this,SecondActivity.class);
二、在跳转页面时还需要传递数据,这个时候如何做呢?
如果数据比较少,比如只要传一个名字,那么只要加一句"
intent.putExtra("
Name"
"
ppy2790"
);
"
即可,代码如下:
intent.putExtra("
startActivity(intent);
如果数据比较多,就需要使用Bundle类了,代码如下:
Intentintent=newIntent(FirstActivity.this,SecondActivity.class);
/*通过Bundle对象存储需要传递的数据*/
Bundlebundle=newBundle();
/*字符、字符串、布尔、字节数组、浮点数等等,都可以传*/
bundle.putString("
bundle.putBoolean("
Ismale"
true);
/*把bundle对象assign给Intent*/
intent.putExtras(bundle);
三、在另一个Activity获取值
以上我们讲的都是如何进行页面跳转及数据传递,那么在另一个页面SecondActivity上,应该如何接收数据呢?
在FirstActivity页面上是以Bundle封装了对象,自然在SecondActivity页面也是以Bundle的方式来解开封装的数据。
主要通过"
getIntent().getExtras()"
方法来获取Bundle,然后再从Bundle中获取数据。
也可以通过"
this.getIntent().getStringExtra("
方法直接从Intent中获取数据。
从Bundle获取数据的代码:
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
/*加载页面*/
setContentView(R.layout.main);
/*获取Intent中的Bundle对象*/
Bundlebundle=this.getIntent().getExtras();
/*获取Bundle中的数据,注意类型和key*/
Stringname=bundle.getString("
booleanismale=bundle.getBoolean("
四、
有时,在页面跳转之后,需要返回到之前的页面,同时要保留用户之前输入的信息,这个时候该怎么办呢?
在页面跳转后,前一个Activity已经被destroy了。
如果要返回并显示数据,就必须将前一个Activity再次唤醒,同时调用某个方法来获取并显示数据。
要实现这个效果,需要做以下几步:
1.首先,从FirstActivity页面跳转到SecondActivity页面时,不可以使用"
startActivity()"
方法,而要使用"
startActivityForResult"
方法。
2.在FirstActivity页面的Activity中,需要重写"
onActivityResult"
方法
protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){
switch(requestCode){
caseRESULT_OK:
/*取得来自SecondActivity页面的数据,并显示到画面*/
Bundlebundle=data.getExtras();
在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:
06|
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项时,后果不堪设想!
您可千万别这么写!
我们再来看看下面的代码:
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&
returnconvertView;
怎么样,上面的代码是不是好了很多?
系统将会减少创建很多View。
性能得到了很大的提升。
还有没有优化的方法呢?
答案是肯定的:
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder;
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&
}
staticclassViewHolder{
TextViewtext;
ImageViewicon;
会不会又给您的系统带来很大的提升呢?
看看下面三种方式的性能对比图您就知道了!
本文是GoogleI/O2009RomainGuy所讲的内容。
androidHandler
ListView优化
Intent调用系统中经常用到的组件
2011-05-1422:
53:
31|
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("
returnIt=newIntent(Intent.ACTION_CALL,callUri);
5,卸载
UriuninstallUri=Uri.fromParts("
package"
xxx"
null);
returnIt=newIntent(Intent.ACTION_DELETE,uninstallUri);
6,安装
UriinstallUri=Uri.fromParts("
returnIt=newIntent(Intent.ACTION_PACKAGE_ADDED,installUri);
7,播放
UriplayUri=Uri.parse("
file:
///sdcard/download/everything.mp3"
returnIt=new