2.1 流动是什么
流动(Activity)是一种能够蕴含用户界面的组件,次要用于和用户进行交互。
2.2 流动的根本用法
2.2.1 手动创建活动
右击 app/src/main/java/com/example/activitytest
-> New -> Activity -> Empty Activity -> FirstActivity
,不勾选 Generate Layout File
和 Launcher Activity
,勾选 Backwards Compatibility
启用向下兼容模式。
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }}
2.2.2 创立和加载布局
右击 app/src/main/res
-> New -> Directory -> layout
,
右击 layout
-> Layout resource file -> first_layout
& LinearLayout
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/button_1" #定义按钮ID语法:@+id/id_name android:layout_width="match_parent" #定义元素宽度:匹配父元素 android:layout_height="wrap_content" #定义元素高度:适配蕴含的元素 android:text="Button 1" /></LinearLayout>
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在以后流动中加载 first_layout 布局 setContentView(R.layout.first_layout); }}
2.2.3 在 AndroidManifest 文件中注册
# app/src/main/AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.activitytest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" #注册的流动名称,可省略包名 android:label="This is FirstActivity"> #指定流动题目 <intent-filter> <action android:name="android.intent.action.MAIN" /> #设为主流动 <category android:name="android.intent.category.LAUNCHER" /> #设为启动器 </intent-filter> </activity> </application></manifest>
2.2.4 在流动中应用 Toast
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在以后流动中加载 first_layout 布局 setContentView(R.layout.first_layout); // 通过按钮ID获取按钮对象 Button button1 = (Button) findViewById(R.id.button_1); // 设置按钮监听器 button1.setOnClickListener(new View.OnClickListener() { // 绑定点击事件 @Override public void onClick(View v) { // 注册 Toast 并显示 Toast.makeText(FirstActivity.this, "You clicked button1", Toast.LENGTH_SHORT).show(); } }); }}
- Toast.LENGTH_SHORT 显示时长较短
- Toast.LENGTH_LONG 显示时长较长
2.2.5 在流动中应用Menu
右击 app/src/main/res
-> New -> Directory -> menu
,
右击 menu
-> New -> Menu resource file -> main
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"> <item # 第一个菜单项 android:id="@+id/add_item" android:title="Add"/> <item # 第二个菜单项 android:id="@+id/remove_item" android:title="Remove"/></menu>
public class FirstActivity extends AppCompatActivity { @Override public boolean onCreateOptionsMenu(Menu menu) { // 应用 MenuInflater 对象为以后流动创立菜单 getMenuInflater().inflate(R.menu.main, menu); return true; } // 监听菜单抉择事件 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.add_item: Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show(); break; default: } return true; }
2.2.6 销毁一个流动
button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); }});