Android开发-前端视图Activity

本文详细介绍了Android中Activity、布局及其子类,包括LinearLayout、FrameLayout、CoordinateLayout、RelativeLayout、AbsoluteLayout、TableLayout和GridLayout。此外,还讨论了View的绘制,包括自定义View、使用Paint和Canvas绘制2D图形,以及使用ImageView实现双缓冲。最后提到了事件机制和通信Intent的基础知识。
摘要由CSDN通过智能技术生成

Android开发-前端视图Activity

sf2gis@163.com

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弗里曼的小伙伴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值