android部分踩坑文档

1、沉浸式图片状态栏使用ImageView控件,并且必须使用

android:background="@mipmap/img_mine_bg" 引入图片 不能使用双src引入!!!!!

2、单Activity多Fragment下自定义状态栏沉浸式+去除阴影+修改字体



// 自定义状态栏:沉浸式+去除阴影+黑色字体

privatevoidMyStatusBarDark(){

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上

            View decorView = getWindow().getDecorView();

            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS

                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

intoption = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

            decorView.setSystemUiVisibility(option);

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

            getWindow().setStatusBarColor(Color.TRANSPARENT);

}elseif(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0

            WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();

            localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);

        }

//修改字体颜色

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//android6.0以后可以对状态栏文字颜色和图标进行修改

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// SYSTEM_UI_FLAG_LIGHT_STATUS_BAR :黑色字体)(SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR :白色字体

        }


3、ScrollView滑动监听

自定义ScrollView

importandroid.content.Context;

importandroid.util.AttributeSet;

importandroid.widget.ScrollView;

publicclassMyScrollViewextendsScrollView{

privateOnScrollListener listener;

publicvoidsetOnScrollListener(OnScrollListener listener){

this.listener = listener;

    }

publicMyScrollView(Context context){

super(context);

    }

publicMyScrollView(Context context, AttributeSet attrs){

super(context, attrs);

    }

publicMyScrollView(Context context, AttributeSet attrs,intdefStyleAttr){

super(context, attrs, defStyleAttr);

    }

//设置接口

publicinterfaceOnScrollListener{

voidonScroll(intscrollY);

    }

//重写原生onScrollChanged方法,将参数传递给接口,由接口传递出去

@Override

protectedvoidonScrollChanged(intl,intt,intoldl,intoldt){

super.onScrollChanged(l, t, oldl, oldt);

//        System.out.println("111111"+t);

if(listener !=null){

//这里我只传了垂直滑动的距离

            listener.onScroll(t);

        }

    }


4 . Android Studio 创建module时版本不统一

Error:Execution failed for task ':app:preDebugAndroidTestBuild'.

> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (

解决:

configurations.all {

        resolutionStrategy.force 'com.android.support:support-annotations:27.1.1'

    }


5.

Activity退出时即时释放资源

Activity退出时所有静态变量恢复为默认值(全局静态变量)

Activity退出时移除所有Handler消息

所有的Dialog对话框调用show()方法之前必须先行判断Activity是否已经finished

EvenBus框架粘性事件使用完或退出页面时必须移除

获取Intent值前必须判断getIntent()返回是否为空

Service有效性比BroadCastReceiver更高

所有网络请求必须对各种情况做处理

作者:eagerabu

链接:https://www.jianshu.com/p/8a4049b9c280

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。