Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

第 4 章 Activity

目录

4.1. 界面佈局
4.1.1. setContentView
4.1.2. 隐藏虚拟键
4.1.3. 保持屏幕常开
4.1.4. 标题栏添加返回按钮
4.2. 切换 Activity
4.2.1. startActivity()
4.2.2. App 间跳转
4.2.3. intentActivityResultLauncher 跳转
4.2.4. startActivityForResult 替代方案
4.3. 生命周期
4.3.1. 定时关闭
4.3.2. 恢复触发
4.3.3. 返回触发
4.3.4. Activity 关闭
4.3.5. 重启自己
4.4. Activity 间数据传递
4.4.1. Intent 方式
4.4.2. Bundle 方式
4.4.3. Flag 属性
4.4.4. 返回值
4.5. DataBinding
4.5.1. 启用 DataBinding
4.5.2. MainActivity 中使用 ActivityMainBinding
4.5.3. ViewDataBinding 例子
4.6. 键盘事件
4.6.1. onKeyDown 键盘按下事件
4.6.2. dispatchKeyEvent
4.6.3. 屏蔽 KeyEvent.KEYCODE_BACK
4.6.4. 判断按下次数
4.7. 鼠标事件
4.8. 分享
4.8.1. 分享文本内容
4.8.2. 分享图片
4.8.3.
4.9. 剪切板
4.10. 软键盘控制
4.11. Res 资源
4.11.1. 通过名称查找 layout ID
4.11.2. 查找 drawable 资源 ID
4.11.3. 获取 color 颜色 ID
4.11.4. 获取 array.xml 文件下某个字段的 ID
4.11.5. 获取 style.xml 文件下的某个样式的 id
4.11.6. 主题 themes.xml

4.1. 界面佈局

4.1.1. setContentView

		
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     <application android:label="Test">
 
		...
		...
        <activity android:name=".WriteActivity"></activity>

    </application>

</manifest>		
		
			
			
setContentView(R.layout.view);			
			
			

4.1.2. 隐藏虚拟键

		
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE;
        getWindow().getDecorView().setSystemUiVisibility(uiOptions);	
        
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
        decorView.setSystemUiVisibility(uiOptions);        	
		
			

Android API 30

		
        WindowInsetsController controller = getWindow().getDecorView().getWindowInsetsController();
        controller.hide(WindowInsets.Type.statusBars());
        controller.hide(WindowInsets.Type.navigationBars());
        controller.hide(WindowInsets.Type.systemBars());		
		
			

4.1.3. 保持屏幕常开

		
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);		
		
			

取消设置

		
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);		
		
			

4.1.4. 标题栏添加返回按钮

onCreate 中添加

		
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);

        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
	}
		
			

Activity 中添加

		
 	@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

		
			

在AndroidManifest.xml中标明Activity的主题

		
<activity
            android:name=".ui.ShareActivity"
            android:exported="false"
            android:theme="@style/AppTheme"/>		
		
			

values/styles.xml 文件中增加

		
 	<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorThemeBackGround</item>
        <item name="colorPrimaryDark">@color/colorThemeBackGround</item>
        <item name="colorAccent">@color/colorThemeBackGround</item>
    </style>