Android细节002

31

去掉默认主题的ActionBar的代码实现

        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

32

添加系统原生menu,要有ActionBar存在

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

33

Intent传递数据

//Intent传递数据
intent.putExtra("key",str);
//取出Intent的数据
Intent intent=getIntent();
String str=intent.getStringExtra("key"); 

Intent传递数据给上一个Activity

//获取返回值的方式启动
startActivityForResult(intent)
//返回数据
intent.putExtra("key",str);
setResult(Result_OK,intent)
//第一个Activity中覆写方法
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
}

34

知晓当前界面是哪个Activity:

建一个Activity的基类在oncreate打印当前Activity类名,

 

随时退出程序:

建一个Activity管理器,管理Activity的添加删除和清空(静态方法)

启动Activity的最佳写法:

在要启动的Activity中写一个静态启动方法,参数包含要传递的数据,当启动该Activity时直接用该静态方法即可

35

活动与碎片通信

活动获取碎片getSupportFragmentManager()

碎片获取活动,getActivity()

碎片与碎片,同理

36

一个很好用的Android源码查找网站

http://androidxref.com

37

全局Context

应用程序启动会先初始化Application类,我们可以自定义一个MyApplication extend Application,然后在里面提供一个全局的Context

记得在AndroidManifest中<application>中的android:name中注册

38

Intent传递自定义对象

一种方法用Serializabel接口,还有一种方法用Parcelable接口

两种区别是Serializable将整个对象序列化,而Parcelable可以部分序列化,效率上Parcelable更高

39

定制日志工具

在开发过程中总会打印很多日志调试程序,但程序上线要一行行删日志打印代码就很麻烦,可以自定义一个日志打印工具来管理要显示哪些级别日志

40

手机多窗口状态

2个应用程序同时显示(一般不会去用多窗口模式)

(生命周期:操作一个应用时另一个应用的activity进入暂停状态)

禁用多窗口模式android:resizeableActivity=false

41

记录一次R集体报红

classpath 'com.android.tools.build:gradle:3.2.1'

版本设置不正确导致的R报红

42

actionbar的title设置

actionBar.setTitle("一个自定义Title");

不要去AndroidManifest中设置android:label="一个自定义Title",这样会改变APP的名称

43

//活动布局显示在状态栏上并使状态栏透明
if (Build.VERSION.SDK_INT>=21){
    View decorView=getWindow().getDecorView();
    //第一个flag为全屏显示,第二个flag保证状态栏可见
    decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    getWindow().setStatusBarColor(Color.TRANSPARENT);
}

测了一下最外层内容布局的高度,确实增加了一段状态栏的高度 

可以配合使用android:fitsSystemWindows="true"来达到自动添加状态栏高度的一段内间距

 

猜你喜欢

转载自blog.csdn.net/yh18668197127/article/details/86594747
002