Android学习系列之二

阅读更多
Developing Applications
Screen的层次
Screen elements由views和viewgroup组成。View包括Text, EditText, Button, ScrollView, checkbox, RadioButton,还有两个InputMethod和MomentMethod不知道为何用。ViewGroup是一群View和ViewGroup的组合,把他们当作一个整体来对待。每个ViewGroup都使用一个继承ViewGroup.LayoutParams的类来定义子View的大小和位置。需要注意的是子孩子的LayoutParams设置必须于父节点的设置相兼容。
通用Layout对象—
FrameLayout:单帧存放,新的内容将完全或局部覆盖旧的,除非新的为透明。
LinearLayout:直线式排列,可以通过android:orientation=”vertical” or “horizontal”来设置。通过padding来设置间隔。也支持weight,设置大小比例。默认为0。
TableLayout:不用多解释了。
AbsoluteLayout:通过(x,y)坐标绝对布局。
RelativeLayout:相对布局。相对某一个目标定位,指明那个目标的ID。例如toLeft:”okbutton”, below:”text”.
还有gallery, gridview, scrollview spinner, tabHost,ViewFlipper等等。
下面要谈到的是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,支持硬件加速。
数据的存取:
1、 preferences 使用key/value对来存取基本数据类型。类似于hashmap.是一种轻量级的方法。
2、 Files 存在设备上或者移动媒体上。
3、 数据库 最重要的一个。Android提供的sqlite数据库。每一个数据库对创建它的包都是私有的。
4、 ContentProviders 提供给外部应用程序读写访问的接口,暴露内部私有数据。但是要遵守制定的规则。
5、 NetWork 网络的力量是强大的。

下面谈到了权限的问题。对于一个application,在安装的时候,分配一个独立的Linux ID,以区别在同一个进程中不能有两个application运行,因为他们是不同的Linux Users。可以在manifest.xml中的manifest tag中指定sharedUserId属性来作为同一个application对待,这样一来,他们对文件又相同的访问权限了。但是为了保证安全性,只有具备了相同的签名,才能设定相同的userid。可以通过设定权限。在安装application的时候会将这些权限加载,如果成功加载了,会按照预期的限制执行访问,如果没有加载,那么访问将会失败,而且没有任何提示,只有后台会抛出SecurityException。在这些情况下,permission会被强行检测。
1、 在调用一个系统的时候,防止系统内的一些方法执行。
2、 当启动一个activity时,防止一个application去启用其他application的activity。
3、 Intent Broadcasting.控制谁能接受你的broadcast和谁能向你发送broadcast。
4、 当访问和操作一个ContentProvider的时候
5、 绑定或开启一个服务

可以在自己的项目中创建permission,必须包括id, android:lable 和android:description三个属性。
Activity, service, IntentReceiver, ContentProvider都可以设置android:permission。你也可以在广播一个Intent的时候给它制定一个permission,通过Context.BoardcastIntent(String Intent,String Receiverpermission)带一个String的permission参数。

你可能感兴趣的:(Android,Linux,HTC,XML,SQLite)