小tip

作者: 被风扬起的沙 | 来源:发表于2016-08-31 14:51 被阅读62次

    在命令行里面添加文本
    按键盘i键转换到文本输入
    输入 文本
    输入完毕,按ESC 键,然后按:wq 保存后退出

    友盟分享中qq/Qzone分享没有回调的解决方案

    1.确保在分享所在Activity里实现onActivityresult方法,注意不能在fragment里实现

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
    }
    

    2.确保在manifest xml中配置了正确的android:scheme <data android:scheme="tencent100424468" /> 注意这里的APPid必须和代码中配置的QQ APPid一致,并且注意tencent前缀不要删掉

    Android Studio 中小写字符串快速转化为大写常量表示
    选中小写字符串右键显示选中

    Paste_Image.png Paste_Image.png

    就会生成如下代码:

    public static final String EASY_AS = "easy as";
    

    WebView与 JS 的交互中,由于 JavaBridge 并不在主线程中,我们需要主线程来操作 UI 。
    项目中出现 bug,在原生控件点击调用 popupWindow显示后面的背景,而在webView 中调用JS 弹出popupWindow不显示背景,改为js方法在主线程中调用,bug解决。

    Mac 用终端打开.bash_profile文件配置环境

    open ~/.bash_profile
    

    判断接口是否有效方法

    Paste_Image.png

    sign 是对参数的加密 ,前端跟后台商量好一个加密算法。参数传到后台,后台通过对参数进行加密获得一个 sign值,然后与前端给的 sign 做比对,相同的话就是正常请求,不同则为非法请求。

    RelativeLayout 属性
    // 相对于给定ID控件
    android:layout_above 将该控件的底部置于给定ID的控件之上;
    **android:layout_below ** 将该控件的底部置于给定ID的控件之下;
    android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;
    android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;

    Mac下在command里面输入pwd是查看系统的根目录

    java所说的代码稳定说的是Java运行时的虚拟机稳定

    popupWindow中listView的条目高度显示不完全问题
    在tiem的XML中设置只设置了条目的总高度,但是不识别,需要设置里面控件的高度,才能展示完全

    打开github上的项目报错:Error:The SDK Build Tools revision (22.0.1) is too low for project ':app'. Minimum required is 25.0.
    原因是下图红框里面默认的是2.0.+ ,gradle会默认加载最高版本,改为自己的gradle版本就好

    Paste_Image.png

    listview中Adapter的初始化一般应该放在联网之前,不要放在联网成功里面。
    在Adapter中添加如下代码:

    public void setData(List<data> list){   
     this.list=list;    
    notifyDataSetChanged();
    }
    

    在联网成功拿到数据之后再调用此方法。
    listView的条目点击事件也不宜放在联网成功里面也需要放在联网之前。否则来回切换页面且页面处于网络不好的时候,会报空指针的崩溃,listView的对象找不到。

    studio调出lint去除无用资源

    Paste_Image.png

    singleTop与singleTask的区别
    singleTop模式:如果发现有对应的Activity实例正位于栈顶,则重复利用,不再生成新的实例。如果栈顶没有,则重新生成实例。栈中有可能有多个相同的activity
    singleTask模式:如果发现有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前。栈中只有一个相同的activity

    开发中单例经常需要持有Context对象,要保证Context和AppLication的生命周期一样,即context.getApplicationContext()

    Studio删除项目中所有断点

    Paste_Image.png

    ScrollView里面嵌套的布局只能是一个布局,不可能是两个布局并存。

    H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。现在是最普遍常用的。
    项目中的七牛云播放器目前只支持H264,但是压缩视频的时候并没有采用这个格式,播放的时候就会出现只听见声音而看不画面的情况。

    APP防止恶意注册
    输入手机号点击按钮的时候在SP里面点击的 时间戳 做一次记录,
    时间戳转化为年月日格式,通过如下代码实现:
    public static String timeToData(long time) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String d = format.format(time);
    return d;
    }
    然后进行下次点击是否在同一天的判断,当一天之内点击按钮的次数大于2次的时候就会弹出验证图片的提示框,图片的地址前段是固定的,就跟接口请求差不多,变化只是时间戳的参数变化,这样每次请求的图片就不一样了,图片是后台语言自动生成。

    Glide的本地缓存地址
    Glide源码里面的默认文件下载地址为**getCacheDir( ) **,
    为手机内部存储,存储地址如下:
    data/data/App的包名/cache/glide 默认是隐藏的,只有root之后才能看到

    getExternalCacheDir( ) 为手机外部存储,存储地址如下:
    Android/data/App的包名/cache/ 默认是显示的
    如果我们想缓存图片等比较耗空间的文件,推荐放在getExternalCacheDir()所在的文件下面,这个文件和getCacheDir()很像,都可以放缓存文件,在APP被卸载的时候,都会被系统删除,而且缓存的内容对其他APP是相对私有的。

    项目中layout-sw600dp文件夹的含义
    small width 最小宽度为600dp的即视为平板

    .9图的操作
    左边 上边 拉伸区,画点
    下边 右边 间隔区,画线,定义内容所在区域的上下左右空白区域大小

    点9图四个位置的作用
    左 2个点用来对应用高度等比例的拉伸(不影响右边的图标)
    上 1个点对图标左边的位置进行拉伸
    右 1条线对文字的高度的限制
    下 1条线对文字的长度进行限制
    要居中的时候设置padding为0

    拥抱SVG:苦恼于图片适配 in Android?
    Android对于 SVG 的支持是从 Android L 开始的,它的 SDK 里面加入了 VectorDrawable , AnimatedVectorDrawable 等类帮助我们构建 SVG 图形以及动画,并且你可以在 xml 文件里面直接使用 标签绘制 SVG 图像以及 标签为 SVG 图像分配动画。
    个人感觉现在适用的是能用画笔画的图型,如:返回箭头
    (http://blog.csdn.net/luoyanglizi/article/details/52589234)

    推送跳转方法
    点击推送进行跳转的时候,先跳到闪屏页,然后在闪屏页里面设置跳转两次,主页面在前,要进的页面在后。这样视觉上就像没有打开主页面似的,进入闪屏页之后直接就进了推送展示页

    ** Android Studio开发工具中,打开DDMS,具体的方式如图:**


    ** EventBus接收发来的信息的时候一定要记得注册!!!**
    EventBus.getDefault().register(this);
    EventBus.getDefault().unregister(this);

    Paste_Image.png

    设置按钮监听左边Edittext的时候这样设置:

    textEditor.addTextChangedListener(new TextWatcher() {    
    @Override   
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {}   
     @Override  
      public void onTextChanged(CharSequence s, int start, int before, int count) {}   
     @Override   
     public void afterTextChanged(Editable s) {  
       sendBtn.setEnabled(!s.toString().isEmpty());           
    });
    
    

    在 drawable 文件中的图片获取 bitmap 对象

    Resources res = getResources();
    
    Bitmap bitmap = BitmapFactory.decodeResource(res, id);
    
    id 为 R.drawable. 图片名称
    

    ** DP 与 SP 的区别:**

    使用 sp 作为字体大小单位,会随着系统的字体大小改变
    而 dp 作为单位则不会.

    sp 除了受屏幕密度影响外,还受到用户的字体大小影响
    通常情况下,建议使用 sp 来跟随用户字体大小设置。除非一些特殊的情况,不想跟随系统字体变化的,可以使用 dp.

    ** 布局优化**
    1.RelativeLayout会让子View调用2次onMeasure,LinearLayout 在有weight时,也会调用子View2次onMeasure
    2.RelativeLayout的子View如果高度和RelativeLayout不同,则会引发效率问题,当子View很复杂时,这个问题会更加严重。如果可以,尽量使用padding代替margin。
    3.在不影响层级深度的情况下,使用LinearLayout和FrameLayout而不是RelativeLayout。
    最后再思考一下文章开头那个矛盾的问题,为什么Google给开发者默认新建了个RelativeLayout,而自己却在DecorView中用了个LinearLayout。因为DecorView的层级深度是已知而且固定的,上面一个标题栏,下面一个内容栏。采用RelativeLayout并不会降低层级深度,所以此时在根节点上用LinearLayout是效率最高的。而之所以给开发者默认新建了个RelativeLayout是希望开发者能采用尽量少的View层级来表达布局以实现性能最优,因为复杂的View嵌套对性能的影响会更大一些。

    4.能用两层LinearLayout,尽量用一个RelativeLayout,在时间上此时RelativeLayout耗时更小。另外LinearLayout慎用layout_weight,也将会增加一倍耗时操作。由于使用LinearLayout的layout_weight,大多数时间是不一样的,这会降低测量的速度。这只是一个如何合理使用Layout的案例,必要的时候,你要小心考虑是否用layout weight。总之减少层级结构,才是王道,让onMeasure做延迟加载,用viewStub,include等一些技巧。

    ** RelativeLayout与FrameLayout 的区别**
    The RelativeLayout can use :

    android:layout_toLeftOf="@id/some_view"
    android:layout_toRightOf="@id/some_view"
    android:layout_above="@id/some_view"
    android:layout_below="@id/some_view"
    

    to make sure views lineup correctly in relation to each other. FrameLayout is very similar except it's only using gravity to put display it's views (with no relation).
    RelativeLayout更能精准摆放控件的位置,而FrameLayout 通过重心位置来摆放控件,FrameLayout相当于RelativeLayout的阉割版,比RelativeLayout更小巧。用的时候看需求。

    相关文章

      网友评论

          本文标题:小tip

          本文链接:https://www.haomeiwen.com/subject/ydnqettx.html