Activity基础

作者: MA木易YA | 来源:发表于2019-06-22 22:23 被阅读2次

    Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!

    image.png
    • onCreate、onStart、onPause是可见的,其他均不可见

    创建Activity

    1. 创建继承自Activity的Activity

    public class MainActivity extends Activity
    

    2. 重写需要的回调方法

    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }
    

    3. 设置需要显示的视图

    setContentView(R.layout.activity_main);
    

    配置Activity

        手动创建的Activity并不能直接使用,还需要在AndroidManifest.xml中对Activity进行注册

        配置文件中会有一项对包(package)的定义,之后的路径都是基于这个包的路径使用相对或者绝对路径

    package="com.example.asus.layout">
    

        一般只需要定义Activity的路径,额外的你可以自定义一个标签或者为Activity定义启动项

    <activity android:name=".MainActivity"
                android:label="主函数"
                >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
    • 避免麻烦可以自动右键添加Activity,会自动注册并选择性的创建对应XML

    启动Activity

    I. 入口Activity

    在AndroidManifest.xml中添加intent标签(如上所示),则表示将Activity定义为主启动项,程序启动时会自动将此Activity作为入口启动

    II. 其他Activity
    1) 创建intent对象

    • 后面的NewActivity则是打开的新Activity
    Intent intent = new Intent(MainActivity.this, NewActivity.class);
    

    2)通过startActivity启动

    startActivity(intent); //启动Activity
    

    关闭Activity

        在新打开的Activity中调用finish()方法即可回到原Activity,如果调用finish()的Activity不是主活动则返回到上一级Activity,否则直接回到主屏幕

    刷新屏幕

    onCreate(null)

    • 如果继承AppCompatActivity使用此方法会出现异常

    实例 - 喜马拉雅忘记密码页面跳转

    xml(忘记密码)

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/biaoge"
        android:stretchColumns="0,3">
    
        <!--第一行-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="200dp"
            >
            <TextView />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="账 号:"
                android:gravity="center_horizontal"
                />
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="邮箱或者手机号"
                />
            <TextView />
        </TableRow>
        <!--第二行-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="20dp"
            >
            <TextView />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="18sp"
                android:text="密 码:"
                android:gravity="center_horizontal"
                />
            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="输入6-16位数字或字母"
                />
            <TextView />
        </TableRow>
        <!--第三行-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="注 册"
                />
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="#FF8247"
                android:text="登 录"/>
            <TextView />
        </TableRow>
        <!--第四行-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="20dp"
            >
            <TextView />
            <TextView />
            <TextView
                android:id="@+id/wang_mima"
                android:text="忘记密码?"
                android:textColor="#FF4500"
                android:gravity="right"
                />
            <TextView />
        </TableRow>
    
    
    
    </TableLayout>
    
    
    image.png

    xml(更改密码)

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/beijing"
        android:padding="5dp">
    
        <ImageButton
            android:id="@+id/close"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:src="@drawable/guanbi"
            android:background="#0000"
            android:layout_marginTop="15dp"
            android:scaleType="fitXY"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:text="你的邮箱或手机号"/>
        <EditText
            android:layout_width="200dp"
            android:layout_gravity="center"
            android:layout_height="wrap_content"
            android:hint="请输入邮箱或手机号"/>
        <Button
            android:layout_width="200dp"
            android:layout_height="50dp"
            android:background="#FF8247"
            android:layout_gravity="center"
            android:text="提交"/>
    
    </LinearLayout>
    
    
    image.png

    Activity(点击忘记密码跳转到更改密码页面)

    package com.example.asus.layout;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    
    import android.widget.TabHost;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
        private TabHost tabHost;//声明TabHost组件的对象
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout);
            TextView password = (TextView) findViewById(R.id.wang_mima);   //获取布局文件中的忘记密码
            password.setOnClickListener(new View.OnClickListener() { //为忘记密码创建单击监听事件
                @Override
                public void onClick(View v) {
                    //创建Intent对象
                    Intent intent = new Intent(MainActivity.this, PasswordActivity.class);
                    startActivity(intent); //启动Activity
                }
            });
    
        }
    }
    
    

    Activity(点击关闭“×”返回上级)

    package com.example.asus.layout;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.ImageButton;
    
    public class PasswordActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_password);
    
            ImageButton close = (ImageButton) findViewById(R.id.close); //获取布局文件中的关闭按钮
            close.setOnClickListener(new View.OnClickListener() {  //为关闭按钮创建监听事件
                @Override
                public void onClick(View v)  {
                    finish(); //关闭当前Activity
                }
            });
        }
    }
    
    

    相关文章

      网友评论

        本文标题:Activity基础

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