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
启用向下兼容模式。
<code class="java">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
<code class="xml"><?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>
<code class="java">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 文件中注册
<code class="xml"># 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
<code class="java">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
<code class="xml"><?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>
<code class="java">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 销毁一个流动
<code class="java">button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } });