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

第 101 章 Activity

目录

101.1. 界面佈局
101.1.1. setContentView
101.1.2. 隐藏虚拟键
101.1.3. 保持屏幕常开
101.1.4. 标题栏添加返回按钮
101.2. 切换 Activity
101.2.1. startActivity()
101.2.2. App 间跳转
101.2.3. intentActivityResultLauncher 跳转
101.2.4. startActivityForResult 替代方案
101.3. 生命周期
101.3.1. 定时关闭
101.3.2. 恢复触发
101.3.3. 返回触发
101.3.4. Activity 关闭
101.3.5. 重启自己
101.4. Activity 间数据传递
101.4.1. Intent 方式
101.4.2. Bundle 方式
101.4.3. Flag 属性
101.4.4. 返回值
101.5. DataBinding
101.5.1. 启用 DataBinding
101.5.2. MainActivity 中使用 ActivityMainBinding
101.5.3. ViewDataBinding 例子
101.6. 键盘事件
101.6.1. onKeyDown 键盘按下事件
101.6.2. dispatchKeyEvent
101.6.3. 屏蔽 KeyEvent.KEYCODE_BACK
101.6.4. 判断按下次数
101.7. 鼠标事件
101.8. 分享
101.8.1. 分享文本内容
101.8.2. 分享图片
101.8.3.
101.9. 剪切板
101.10. 软键盘控制
101.11. 自定义事件
101.11.1. 按钮点击事件
101.11.2. OnCheckedChangeListener
101.11.3. CustomOnItemSelectedListener
101.11.4. CustomOnScrollListener
101.11.5. CustomOnTabSelectedListener
101.12. Res 资源
101.12.1. 通过名称查找 layout ID
101.12.2. 查找 drawable 资源 ID
101.12.3. 获取 color 颜色 ID
101.12.4. 获取 array.xml 文件下某个字段的 ID
101.12.5. 获取 style.xml 文件下的某个样式的 id
101.12.6. 主题 themes.xml

101.1. 界面佈局

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

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

101.1.3. 保持屏幕常开

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

取消设置

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

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