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

第 63 章 Activity

目录

63.1. 界面佈局
63.1.1. setContentView
63.1.2. 隐藏虚拟键
63.1.3. 保持屏幕常开
63.1.4. 标题栏添加返回按钮
63.2. 切换 Activity
63.2.1. startActivity()
63.2.2. App 间跳转
63.2.3. intentActivityResultLauncher 跳转
63.2.4. startActivityForResult 替代方案
63.3. 生命周期
63.3.1. 定时关闭
63.3.2. 恢复触发
63.3.3. 返回触发
63.3.4. Activity 关闭
63.3.5. 重启自己
63.4. Activity 间数据传递
63.4.1. Intent 方式
63.4.2. Bundle 方式
63.4.3. Flag 属性
63.4.4. 返回值
63.5. DataBinding
63.5.1. 启用 DataBinding
63.5.2. MainActivity 中使用 ActivityMainBinding
63.5.3. ViewDataBinding 例子
63.6. 键盘事件
63.6.1. onKeyDown 键盘按下事件
63.6.2. dispatchKeyEvent
63.6.3. 屏蔽 KeyEvent.KEYCODE_BACK
63.6.4. 判断按下次数
63.7. 鼠标事件
63.8. 分享
63.8.1. 分享文本内容
63.8.2. 分享图片
63.8.3.
63.9. 剪切板
63.10. 软键盘控制
63.11. 自定义事件
63.11.1. 按钮点击事件
63.11.2. OnCheckedChangeListener
63.11.3. CustomOnItemSelectedListener
63.11.4. CustomOnScrollListener
63.11.5. CustomOnTabSelectedListener
63.12. Res 资源
63.12.1. 通过名称查找 layout ID
63.12.2. 查找 drawable 资源 ID
63.12.3. 获取 color 颜色 ID
63.12.4. 获取 array.xml 文件下某个字段的 ID
63.12.5. 获取 style.xml 文件下的某个样式的 id
63.12.6. 主题 themes.xml

63.1. 界面佈局

63.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);			
			
			

63.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());		
		
			

63.1.3. 保持屏幕常开

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

取消设置

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

63.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>