• Android 平时工作日常总结


    一、平时日常总结

      1.Intent的使用

            

            补充:FlAG_ACTIVITY_CLEAN_TOP : 类似于singal task的使用

      2.延迟函数的使用  

         Utils.runOnUiThreadDelay

      3. FragmentPagerAdapter和FragmentStatePagerAdapter区别

       相同点:两者都会保持当前item(即fragment)和前后的item的状态。显示当前item的同时,Adapter会提前初始化后一个item,并把当前item的前一个item保存在内存中。

        不同点:FragmentPagerAdapter会保留页面的状态,并不会完全销毁掉;FragmentStatePagerAdapter会完全销毁滑动过去的item,当需要初始化的时候,会重新初始化页面。

        如何选择:当Viewpager中fragment数量多的时候用FragmentStatePagerAdapter,反之则用FragmentPagerAdapter

      4.跨模块编译使用的方法

         

               在values目录下创建这个文件,它会在编译时候把所有的ids都会放在一起来编译的

      5.动态获取组件的位置

        ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) mOperationView.getLayoutParams();
    layoutParams.bottomMargin = marginBottom;
    mOperationView.setLayoutParams(layoutParams);

     6.对图片的缩放的使用

             setScaleX : 尤其在recycleview里面使用

      7.解决库之间的依赖

        configurations {
    compile.exclude module: 'kuaishou-app-logsdk-proto-nano'
    all*.exclude group:'kuaishou', module: 'kuaishou-app-logsdk-proto-nano'

     8.3D展示界面以及id名称
      https://www.jianshu.com/p/8ea577c60865

    9.对Activity的状态栏、导航栏的适配
      https://blog.csdn.net/mirkowug/article/details/88715051
      https://www.cnblogs.com/ldq2016/p/6824396.html
    10.动态修改空间的位置和编译使用的命令
      
    ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) tvTitle.getLayoutParams();

    layoutParams.topMargin = 60;
        tvTitle.setLayoutParams(layoutParams);

      ./gradlew assembleRelease
      ./gradlew assembleDebug
      
     

    二、控件的介绍

      1. expandablelistview :  可实现二级列表条目显示功能

       

      2.DrawerLayout :  显示界面和侧拉一并使用

       

       注意事项 :android:layout_gravity , 第二三个控件这个属性一定要设置

      

        3.SwipeRefreshLayout : 下拉刷新控件

             

       4.shape :  用于给控件作为背景

                

                 

       5.selector : 状态选择器

                

       6.Style的风格定义

                <!--背景颜色及和透明程度-->  

                <item name="android:windowBackground">@android:color/transparent</item>  

                <!--是否去除标题 -->  

                <item name="android:windowNoTitle">true</item>  

               <!--是否去除边框-->  

               <item name="android:windowFrame">@null</item>  

               <!--是否浮现在activity之上-->  

               <item name="android:windowIsFloating">true</item>  

               <!--是否模糊-->  

               <item name="android:backgroundDimEnabled">false</item> 

              <!--允许activitytransition转场动画-->

              <item name="android:windowActivityTransitions">true</item>

             

             windowTranslucentStatus :  此时该页面可以拉伸到顶部状态栏,并且定义顶部状态栏透明

             true : 表明状态栏不能修改

             false: 表明状态栏能修改

             windowTranslucentNavigation : 此时页面的导航栏设置为透明颜色

             true : 表明底部导航栏不能修改

             false : 表明底部导航栏可以修改

             fitsSystemWindows : 系统会为该view设置paddingTop,距离顶部一定距离 

       7.app做签名的使用

          

      8. 自定义view 的规则

        从上(起点)到下(终点),从左(起点)到右(终点)的规则

             

        红色的箭头坐标为(0,0) 右下角的坐标为(720,1080 --->这个是代表手机屏幕的分辨率)

        往右为正,往左为负;往下为正,往上为负

        9. AlertDialog自定义的setView于setContentVIew区别以及案例

        (1). 区别 :setContentView需要在dialog.show之后使用,而setView则是在dialog.show之前使用。所以,当我们需要后续更新dialog的view界面的时候,可以使用setContentView更方便。

        (2).  setContentView的用法 : 

          AlertDialog dialog=new AlertDialog.Builder(this).create();

                      View layout = LayoutInflater.from(this).inflate(R.layout.dialog, null);

                      dialog.show(); 

               dialog.setContentView(layout);

                    --------------------------------------------------------

           setView的用法 :

                     AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                  View layout = LayoutInflater.from(this).inflate(R.layout.dialog, null);
    builder.setView(layout);
    AlertDialog dialog = builder.create();
    //展示
    dialog.show();
      
      10. EditView的字段添加和删除
       删除:
          KeyEvent event = new KeyEvent(0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
          edittext.dispatchKeyEvent(event);
        
        增加:

          int index = edittext.getSelectionStart();

              Editable editable = chathomeSend.getText();

            editable.insert(index, icon);
      11.动态实现圆      private GradientDrawable getRoundRectDrawable(int radiu, int color){
             float[] radius = {0, 0, radiu, radiu, radiu, radiu, 0, 0};
    GradientDrawable drawable=new GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setGradientType(GradientDrawable.RECTANGLE);
    drawable.setCornerRadii(radius);
    drawable.setColor(color);
    return drawable;
    }
    12. 16进制转换为10进制的颜色转换
         Color.parseColor("#00CCFF")

      13.进度条的样式使用
      https://www.jianshu.com/p/8f3db94d7efe 转圈圈显示、播放进度条显示


    三、app性能优化问题
      1.如何定位.so文件被哪个类依赖
        1.把已有app拖进到AS工程中,查看你需要的处理的.so文件
        2.去根目录下查找.gradle文件(这个会被隐藏掉,需要把它显示出来),查找.so库,找到对应的库,进入它的所在的目录
        3.在它目前前面会对应这jar包,然后解析jar包,就可以知道是哪个类再调用了
        4.资源文件的较少
        5.混淆
        6.代码的删除
     

     

                  

        

         

  • 相关阅读:
    安装express 新建项目遇到问题汇总
    Java IO
    python3基础之“函数(1)”
    python3基础之“小练习(3)”
    python3基础之“小练习(2)”
    python3基础之“小练习(1)”
    linux命令
    1.环境安装部署汇总
    阶段13-直播~
    docker环境问题
  • 原文地址:https://www.cnblogs.com/liunx1109/p/12238504.html
Copyright © 2020-2023  润新知