01. Android基础——活动1

活动的基本用法

  1. 包含用户界面的组件,主要是用来和用户交互,一个应用程序中可以包含多个活动

  2. 手动创建一个活动

    1. 路径:app/src/main/java/com.xxx.yy

    2. 例子

      package com.example.activitytest;
      
      import androidx.appcompat.app.AppCompatActivity;
      
      import android.os.Bundle;
      
      public class FirstActivity extends AppCompatActivity {
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
          }
      }
      
      • 在项目中,任何活动都应该重写Activity中的onCreate()方法
  3. 创建和加载布局

    1. 路径:app/src/main/res/layout

    2. 要创建的是layout resource file

    3. 例子

      <?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" 
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/button1"
              />
      
      </LinearLayout>
      
      • 使用的LinearLayout布局
      • android:id:表示个当前的元素定义一个唯一的标识符
      • android:layout_width:指定当前元素的宽度,match_parent表示让当前元素和父元素一样宽
      • android:layout_height:指定当前元素的高度,wrap_content表示让当前元素的高度刚好包含里面的内容
      • android:text:指定元素中先是到文字内容
    4. 在活动加载布局

      1. 在刚才创建的FirstActivity中

        package com.example.activitytest;
        
        import androidx.appcompat.app.AppCompatActivity;
        
        import android.os.Bundle;
        
        public class FirstActivity extends AppCompatActivity {
        
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        
                // 使用setContentView()方法来给当前的活动加载一个布局,传入的是布局文件的id
                setContentView(R.layout.first_layout);
            }
        }
        
    5. 注册活动

      1. 路径:app/src/main/AndroidManifest.xml

      2. 所有的活动都注册在这个文件中,不注册就不能用

      3. 示例

        <?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:roundIcon="@mipmap/ic_launcher_round"
                android:supportsRtl="true"
                android:theme="@style/Theme.Activitytest">
                <activity
                    android:name=".FirstActivity"
                    android:exported="true">
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN"/>
                        <category android:name="android.intent.category.LAUNCHER"/>
                    </intent-filter>
                </activity>
        
            </application>
        
        </manifest>
        
        • 所有的活动都放在application标签中
        • 通过activity标签来注册活动(如果你使用的是Android Studio,那么它会自动完成注册)
        • 在activity标签中
          • android:name:指定具体注册哪一个 活动,因为最外层的package属性已经指定了包名,所以这里可以直接用.
          • android:exported:用来表示当前的活动是否可以被另一个活动的组件启动,true表示可以,如果设置了intent-filter标签,那么必须设置为true
        • 在activity标签内部加入intent-filter标签,然后在这里声明主活动(代码如上所示)
    6. Toast

      1. Android系统提供的提醒方式,展示一段时间之后会自动消失,不占用屏幕空间

      2. 示例:使用Toast

        // 代码位置:上面定义的FirstActivity
        public class FirstActivity extends AppCompatActivity {
        
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                // 使用setContentView()方法来给当前的活动加载一个布局,传入的是布局文件的id
                setContentView(R.layout.first_layout);
        
                Button button1 = findViewById(R.id.button_1);
                button1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(FirstActivity.this,"你点我干啥?",Toast.LENGTH_SHORT).show();
                    }
                });
            }
        }
        
        • 通过findViewById()这个方法获取布局文件中定义的元素,这里是上面定义的那个按钮
        • setOnClickListener()方法可以给按钮注册一个监听器,这样当点击按钮的时候就会执行监听器中的onClick()方法
        • Toast调用makeText()方法,这个方法传递三个参数
          • 参数1:Toast要求的上下文,因为活动本身就是一个Context对象,所以直接传入FirstAc.this
          • 参数2:要显示的文本内容
          • 参数3:显示的时长,有Toast.LENGTH_SHORT和Toast.LENGTH_LONG两种
    7. Menu

      1. 如果有大量的菜单需要显示,可以使用Menu

      2. 路径:app/src/main/res/menu

      3. 新建一个Menu resource file文件

      4. 示例

        <?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="添加" />
        
            <item
                android:id="@+id/remove_item"
                android:title="移除" />
        </menu>
        
        • item标签用来创建具体的某一个菜单选项
        • android:id:给菜单项指定唯一标识符
        • android:title:菜单项的内容
      5. 示例:使用menu

            public boolean onCreateOptionsMenu(Menu menu){
                getMenuInflater().inflate(R.menu.main,menu);
                return true;
            }
            
            public boolean onOptionsItemSelected(MenuItem item){
                switch (item.getItemId()){
                    case R.id.add_item:
                        Toast.makeText(this,"点击添加",Toast.LENGTH_SHORT).show();
                        break;
                    case R.id.remove_item:
                        Toast.makeText(this,"点击移除",Toast.LENGTH_SHORT).show();
                        break;
                    default:
                }
                return true;
            }
        
        • 这两个方法和onCreate()方法同一级
        • onCreateOptionsMenu()方法
          • 能够得到MenuInflater对象
          • 调用inflate()方法可以给当前的活动创建菜单
          • inflate()方法接受两个参数
            • 参数1:指定我们通过哪一个资源文件来创建菜单
            • 参数2:指定我们的菜单项将添加到哪一个Menu对象中
          • 这个方法返回true,表示将创建的菜单显示出来
        • onOptionsItemSelected()方法
          • 通过调用item.getItemId()方法来判断我们点击了哪一个菜单项,然后在相应的菜单项中加入逻辑,比如这里就使用Toast弹出信息
    8. 销毁活动

      1. 可以直接按下Back键销毁当前的活动

      2. 在程序中通过代码销毁活动

        @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                // 使用setContentView()方法来给当前的活动加载一个布局,传入的是布局文件的id
                setContentView(R.layout.first_layout);
        
                Button button1 =  findViewById(R.id.button_1);
                button1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                       finish();
                    }
                });
            }
        
        • 使用finish()来销毁活动
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容