Android小知识文档格式.docx

上传人:b****5 文档编号:20791060 上传时间:2023-01-25 格式:DOCX 页数:46 大小:840.68KB
下载 相关 举报
Android小知识文档格式.docx_第1页
第1页 / 共46页
Android小知识文档格式.docx_第2页
第2页 / 共46页
Android小知识文档格式.docx_第3页
第3页 / 共46页
Android小知识文档格式.docx_第4页
第4页 / 共46页
Android小知识文档格式.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

Android小知识文档格式.docx

《Android小知识文档格式.docx》由会员分享,可在线阅读,更多相关《Android小知识文档格式.docx(46页珍藏版)》请在冰豆网上搜索。

Android小知识文档格式.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1