Android学习系列之二

  Developing Applications

  Screen的层次

  Screen elementsviewsviewgroup组成。View包括Text, EditText, Button, ScrollView, checkbox, RadioButton,还有两个InputMethodMomentMethod不知道为何用。ViewGroup是一群ViewViewGroup的组合,把他们当作一个整体来对待。每个ViewGroup都使用一个继承ViewGroup.LayoutParams的类来定义子 View的大小和位置。需要注意的是子孩子的LayoutParams设置必须于父节点的设置相兼容。

  通用Layout对象—

  FrameLayout:单帧存放,新的内容将完全或局部覆盖旧的,除非新的为透明。

  LinearLayout:直线式排列,可以通过android:orientation=verticalor horizontal”来设置。通过padding来设置间隔。也支持weight,设置大小比例。默认为0

TableLayout:不用多解释了。

AbsoluteLayout:通过(x,y)坐标绝对布局。

  RelativeLayout:相对布局。相对某一个目标定位,指明那个目标的ID。例如toLeft:okbutton, below:text.

  还有gallery, gridview, scrollview spinner, tabHostViewFlipper等等。

  下面要谈到的是AdapterViews,用于对数据的绑定。通常的做法是通过id找到这个object,调用 object.setAdapter()。可以设置为字符串的ArrayAdapter(),也可以查询数据库返回一个cursor,设置 CursorAdapter()。处理用户响应事件和以前学的一样,设置一个OnItemClickListener,覆盖里面的OnItemClick ()方法。

  Android 使用在xml中配置界面的设计还是很强大的。还记得以前写俄罗斯方块,一个小小的界面就得写一大堆代码。乱七八糟的。不堪入目。现在好了,xml起码在格式上就显得很整齐,很有层次。

  手机界面都有个主题。Android activity也提供了这个设置。类似于网页设计里的css。在manifest.xml中的application android:theme=@android:style/theme.dark”。注意这里是style,而文件结构中的却是styles.xml 不知道为什么这样设计。也可以在Oncreate()方法里面通过setTheme()来设置。关于画图,2D的提供了Surface, SurfaceView,Canvas很好用,但是不支持硬件加速。3D的提供了OpenGL ES,支持硬件加速。

数据的存取:

1preferences 使用key/value对来存取基本数据类型。类似于hashmap.是一种轻量级的方法。

2Files 存在设备上或者移动媒体上。

3、 数据库 最重要的一个。Android提供的sqlite数据库。每一个数据库对创建它的包都是私有的。

4ContentProviders 提供给外部应用程序读写访问的接口,暴露内部私有数据。但是要遵守制定的规则。

5NetWork 网络的力量是强大的。

  下面谈到了权限的问题。对于一个application,在安装的时候,分配一个独立的Linux ID,以区别在同一个进程中不能有两个application运行,因为他们是不同的Linux Users。可以在manifest.xml中的manifest tag中指定sharedUserId属性来作为同一个application对待,这样一来,他们对文件又相同的访问权限了。但是为了保证安全性,只有具备了相同的签名,才能设定相同的userid。可以通过设定权限。在安装application的时候会将这些权限加载,如果成功加载了,会按照预期的限制执行访问,如果没有加载,那么访问将会失败,而且没有任何提示,只有后台会抛出 SecurityException。在这些情况下,permission会被强行检测。

1、 在调用一个系统的时候,防止系统内的一些方法执行。

2、 当启动一个activity时,防止一个application去启用其他applicationactivity

3Intent Broadcasting.控制谁能接受你的broadcast和谁能向你发送broadcast

4、 当访问和操作一个ContentProvider的时候

5、 绑定或开启一个服务

  可以在自己的项目中创建permission,必须包括id, android:lable android:description三个属性。

  Activity, service, IntentReceiver, ContentProvider都可以设置android:permission。你也可以在广播一个Intent的时候给它制定一个 permission,通过Context.BoardcastIntent(String IntentString Receiverpermission)带一个Stringpermission参数。


来源:Android实验室

上一篇: Android学习系列之一

下一篇: Android学习系列之三

分享到: 更多