Android开发-前端视图Activity
2016年1月11日增加GUI模型
1 目标:绘制界面,人机交互。
2 原理:调用硬件进行绘图。
3 流程:Activity作为程序界面的总体控制,XML和Res作为界面的静态设置。Window是实际的绘制者,View是绘制的内容,Fragment是可重用的Activity。
Activity读取XML进制绘制:将XML转化为Java类的属性,读取配置后创建Window。Window绘制各个View。
setContentView(R.layout.activity_main);
View的容器是ViewGroup(也是一个View),可以向其中添加View。
参考:http://cheng330301560.iteye.com/blog/1464678
http://www.cnblogs.com/manuosex/p/3231421.html
http://www.cnblogs.com/GnagWang/archive/2011/03/31/2001067.html
http://blog.csdn.net/chujidiy/article/details/7820451
4 方法:布局Layout,ViewGroup的子类,用于按规则盛放其它View。
参考:http://segmentfault.com/a/1190000002888109
http://www.cnblogs.com/chiao/archive/2011/08/24/2152435.html
4.1 线性布局LinearLayout:仅一行或一列,类似Swing中的FlowLayout,按顺序排放。
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/textView7"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<Button
android:layout_width="56dp"
android:layout_height="wrap_content"
android:text="NewButton2"
android:id="@+id/button2"/>
<Button
android:layout_width="47dp"
android:layout_height="wrap_content"
android:text="NewButton6"
android:id="@+id/button6"
android:layout_gravity="center_vertical" />
<Button
android:layout_width="43dp"
android:layout_height="wrap_content"
android:text="NewButton5"
android:id="@+id/button5" />
<Button
android:layout_width="36dp"
android:layout_height="wrap_content"
android:text="NewButton4"
android:id="@+id/button4" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NewButton3"
android:id="@+id/button3" />
</LinearLayout>
4.2 帧布局FrameLayout:将当前区域分为9个,但每个区只显示一个控件。类似Swing中的cardlayout。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/textView7"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="75dp">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NewButton2"
android:id="@+id/button2"
android:layout_gravity="left|top" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NewButton3"
android:id="@+id/button3"
android:layout_gravity="center_horizontal|top" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NewButton4"
android:id="@+id/button4"
android:layout_gravity="center" />
<Button
android:layout_width="50dp"
android:layout_height="173dp"
android:text="NewButton5"
android:id="@+id/button5"
android:layout_gravity="left|top" />
</FrameLayout>
4.3 坐标布局CoordinateLayout:FrameLayout的子类,提供动态效果。
参考:http://my.oschina.net/kooeasy/blog/484593
http://www.2cto.com/kf/201506/409067.html
http://blog.csdn.net/xyz_lmn/article/details/48055919
4.4 相对布局RelativeLayout:父子控制决定位置。
<?xmlversion="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"
android:layout_height="match_parent"android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main"tools:context=".MainActivity">
<TextView android:text="HelloWorld!" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="LargeText"
android:id="@+id/textView6"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="LargeText"
android:id="@+id/textView7"
android:layout_below="@+id/textView6"
android:layout_alignParentLeft="true"
android:layou