美文网首页安卓开发那点事
Android_1_第一个项目

Android_1_第一个项目

作者: icechao | 来源:发表于2016-11-03 22:29 被阅读0次

    想写点什么,不知道从那里开始,正好想复习安卓基础那就写写安卓基础吧!!

    当创建第一个项目时,文件新建一直下一步直到完成,系统会自动生成一个MainActivity.class这个类继承自Activity,有的版本比 较高可能不是直接继承Activty而是继承自AppCompatActivity或其他,他们也是Activity的直接或间接子类。

    系统生成的Activity的代码

    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //设置Activity的布局文件
            setContentView(R.layout.activity_main);
        }
    }
    

    Activity

    Activity是安卓四大组件之一,他控制着界面的显示,是个安卓控件的容器,用户用程序列交互的主要载体,在一般MVC的模式下的安卓项目,逻辑部份代码也会写在Activity中,也就是说在MVC模式下Activity即是View又是Controller.

    MVC

    MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的 模式:
    Model(模型)表示应用程序核心(比如数据库记录列表)。
    View(视图)显示数据(数据库记录)。
    Controller(控制器)处理输入(写入数据库记录)。
    MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。

    Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
    通常模型对象负责在数据库中存取数据。
     
    View(视图)是应用程序中处理数据显示的部分。
    通常视图是依据模型数据创建的。

    Controller(控制器)是应用程序中处理用户交互的部分
    通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
    MVC 分层有助于管理复杂的应用程序,因为您可以在一个时间内专门关注一个方面。例如,您可以在不 依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。
    MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

    每个Activity都直接或间接继承了Activity,当创建一个Activity时我们需要复写Activity里面的onCreate() 方法,在onCreate方法里调用setContentView(layou)方法,传入的参数就是这个 Activity的布局样式,也就是你这个Activity页面的layout文件的对应id,安卓默认会为每一个资源文件分配一个唯一id,这个layout文件就是由安卓的控件组成,控件也是安卓界面上的组成部分,就像汽车有很多零配件组成一样。

    在Activity和生命周期相关的方法

    1. onCreate() 当Activity被创建时执行
    2. onStart() 当Activity可见时执行
    3. onResume() 当Activity获得焦点时执行
    4. onPause() 当Activity失去焦点时执
    5. onStop() 当Activity不可见时执行
    6. onDestroy() 当Activity被销毁时执行

    一般我们会在onCreate()方法中做一些Activity初始化的操作,在onDestroy()方法中做一些,页面资源的释放的操作,比如bitmap的释放,取消网络请求等

    当定义一个Activity想要在运行时打开这个Activity必须要把这个Activity定义到清单文件中,方法是在AndroidManifest.xml文件中的application节点下添加一个activity标签并添加name属性,值设置为:项目包名.子包名.类名用,或缺省项目包名:.子包名.类名.

    默认生成的Activity在AndroidMenifest.xml中的定义

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:theme="@style/AppTheme">
        <activity android:name=".activity.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    

    其中intent-filter这个子标签是一个过滤器,指定这个Activity是这个应用程度的第一个页面也就是 这个页面是这个应用的主界面,'android.intent.action.MAIN'决定应用程序最先启动的 Activity'
    android.intent.category.LAUNCHER'决定应用程序是否显示在程序列表里,也就是这个Activity 是不是一个启动的Activity

    布局

    每一个Activity都必须有一个布局,最常见的是我们为每个Activity定义一个xml格式的布局文件,这个 布局文件就是由控件组成的用来展示的界面。

    系统默认生成的布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">
    
    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    </RelativeLayout>
    

    第一行是标准的xml头
    第二行是定义一个RelativeLayout(相对布局)标签,最后一行是表示这个相对布局结束的标签,xmlns是xml name space xml的命名空间,也就是声名一个android的前缀,他默认指向一个命名空间,这个命名空间也是安卓系统默认的命名空间,声名这个前缀后可以直接以'android:属性='的方式使用这个命名空间里为控件定义好的属性,安卓系统本身为默认控件定义好了很多属性;在中间的TextView标签是表示在相对布局中添加一个子控件一个文本显示的控件。

    安卓常用布局

    帧布局(FrameLayout)

    在他里面的的所有显示都将固定在屏幕的左上角,只能通过本身的gravity,padding属性或者子控件的layout_gravity,margin属性设置位置,允许有多个显示对象.

    属性

    Android:foreground 设置该帧布局容器的前景图像;

    android:foregroundGravity 设置前景图像的显示位置

    相对布局(RelativeLayout)

    相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

    常用属性:

    android:layout_above 将该控件的底部置于给定ID的控件之上;

    android:layout_below 将该控件的底部置于给定ID的控件之下;

    android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;

    android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;

    android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;

    android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;

    android:layout_alignBottom 将该控件的底部边缘与给定ID的底部边缘对齐;

    android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;

    android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;

    android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;

    android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;

    android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;

    android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;

    android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;

    android:layout_centerVertical 如果为true,将该控件的置于垂直居中;

    android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;

    线性布局(LinearLayout)

    线性布局是所有布局中最常用的类之一,也是RadioGroup, TabWidget, TableLayout, TableRow, ZoomControls类的父类。LinearLayout可以让它的子元素垂直或水平的方式排成一行(不设置方向的时候默认按照垂直方向排列)。

    常用属性:

    android:gravity 自己所有子控件的对齐方式,设置在父元素上,多个值用|隔开

    android:orientation 线性布局以列或行来显示内部子元素

    android:layout_weightSum 设置线性布局的总权重数,如不设置为子类设置权重之和

    android:layout_weight 分配权重值,其值越小,权重越大,用在线性布局的子控件上

    绝对布局(AbsoluteLayout)

    绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

    网格布局(GridLayout)

    4.0新增布局。控件从做到右,从上到下排列

    表格布局(TableLayout)

    以表格的形式而已

    约束布局(ConstraintLayout) (更像相对布局的升级版)

    布局示例:引用 无恨星晨 的博客

    在布局对象中定义的控件默认先定义的控件,也就是写在前面的控件会在底层,后定义的会在先定义的控件上层

    常用属性列举

    id               为控件定义一个id
    layout_width       指定控件的宽
    layout_height     指定控件的高
    margin           指定控件相对父控件或兄弟控件的边距
    marginLeft       指定控件相对父控件或兄弟控件的左边距
    margintRight       指定控件相对父控件或兄弟控件的右边距
    marginTop         指定控件相对父控件或兄弟控件的上边距
    marginBottom       指定控件相对父控件或兄弟控件的下边距
    padding         指定控件子控件或内容与与本身的边距
    paddingLeft     指定控件子控件或内容与与本身的左边距
    paddingRight       指定控件子控件或内容与与本身的右边距
    paddingTop      指定控件子控件或内容与与本身的上边距
    paddingBottom     指定控件子控件或内容与与本身的下边距
    text               指定可显示文字的控件的文字内容
    layout_gravity  控件本身相对于父元控件的对齐方式

    相关文章

      网友评论

        本文标题:Android_1_第一个项目

        本文链接:https://www.haomeiwen.com/subject/sleiuttx.html