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