美文网首页
android杂文

android杂文

作者: aidlFor | 来源:发表于2020-05-02 12:02 被阅读0次

    一 ,adb 相关

    1,在root环境下竟然可以用代码执行adb
    2,chmod -R 777 dir/ 赋给文件夹权限
    3,adb shell screencap -p /sdcard/2.png 截图到sdcard

    1、查看设备cpu和内存占用情况:
    adb shell top
    2、打印每个进程使用CPU详情输出至cpu.txt:
    adb shell top > CPU.txt

    3、要监测单个应用,例如针对包名的CPU占用率
    1)监测一次微博的CPU占用情况:
    adb shell top -n 1 | grep com.xxx.xxx
    2)10秒刷新一次显示CPU占用情况:
    adb shell top -d 10 | grep com.xxx.xxx
    3)实时监测包名的CPU占用情况:
    adb shell top |grep com.xxx.xxx

    ps |grep com.xxx.xxx 查看指定包名的进程

    setprop debug.layout true 设置系统属性 查看布局边界

    adb shell am broadcast -a "action" 发送广播

    做定制android的时候经常用到adb 命令 如果想在windows下连续执行adb命令怎么办 ,只要把命令写在 txt里 把扩展名称改成bat就可以了
    如果想执行 adb shell中的 只要每句都带着就好了,本篇记录一下自己用到过的adb记录一下

    二,LayoutParams相关

    动态布局在某些场景下还是方便。所谓动态布局,也就是不写xml直接用代码实现。我们正常的思路就是找到容器然后addView到容器中。
    一般我们要指定View在容器中的位置,这样就要设置LayoutParams。但是如何设置都不起作用。最后发现需要用父容器的LayoutParams。就这样。记录一下。

            TextView textView = new TextView(this);
            textView.setText("123");
            textView.setTextColor(getColor(R.color.color_light_text));
            textView.setTextSize(36);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
    //        lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            lp.leftMargin =500;
    //        textView.setX(1117);
    //        textView.setY(147);
            textView.setLayoutParams(lp);
            View decorView = getWindow().getDecorView();
            FrameLayout contentParent = decorView.findViewById(android.R.id.content);
            contentParent.addView(textView);
    

    上面我用的RelativeLayout的LayoutParams,设置不上。 原来我的容器是LinearLayout。 就这样

         TextView normalTextView = new TextView(this);
            normalTextView.setText(TranslationInfo.getInstance().getNormalText());
            normalTextView.setTextColor(getColor(R.color.color_light_text));
            normalTextView.setTextSize(36);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            lp.rightMargin = 554;
            lp.topMargin = 147;
            normalTextView.setGravity(Gravity.RIGHT);
            normalTextView.setLayoutParams(lp);
            View decorView = getWindow().getDecorView();
            FrameLayout contentParent = decorView.findViewById(android.R.id.content);
            contentParent.addView(normalTextView);
    
    

    三,集合相关

    作者:装逼百科
    链接:https://www.zhihu.com/question/271757053/answer/363282519

    接口定义

    public interface Iterable<T> {
      Iterator<T> iterator();
    }
    
    public interface Iterator<E> {
      boolean hasNext();
      E next();
      void remove();
    }
    

    Iterable只是返回了Iterator接口的一个实例,这里很是奇怪,为什么不把两个接口合二为一,直接在Iterable里面定义hasNext(),next()等方法呢?原因是实现了Iterable的类可以在实现多个Iterator内部类,例如LinkedList中的ListItr和DescendingIterator两个内部类,就分别实现了双向遍历和逆序遍历。通过返回不同的Iterator实现不同的遍历方式,这样更加灵活。如果把两个接口合并,就没法返回不同的Iterator实现类了。上个代码,直观地展示一下实现了Iterable的类如何通过返回不同的Iterator从而实现不同的遍历方式。MutilIterator实现了三种迭代器,分别是默认的前向迭代器,反向迭代器和随机迭代器。主函数中分别调用了三种迭代器进行遍历。代码示例

    MutilIterator.java
    import java.util.*;
    
    public class MutilIterator implements Iterable<String> {
     private String[] words = "May I get offers this summer.".split(" ");
    
        //默认的迭代器,前向遍历 public Iterator<String> iterator() {
           //匿名内部类 return new Iterator<String>() {
                private int index = 0;
                public boolean hasNext() {return index < words.length;}
                public String next() { return words[index++];    }
                public void remove() { // Not implemented throw new UnsupportedOperationException();
                }
            };
        }
    
    //反向迭代器 public Iterable<String> reverseIterator() {
            return new Iterable<String>() {
                @Override public Iterator<String> iterator() {
                    return new Iterator<String>() {
                        private int index = words.length - 1;
                        public boolean hasNext() {return index > -1; }
                        public String next() {return words[index--]; }
                        public void remove() { // Not implemented throw new UnsupportedOperationException();
                        }
                    };
                }
            };
        }
    //随机迭代器,注意这里不是创建一个新的Iterator,而是返回了一个打乱的List中的迭代器 public Iterable<String> randomized() {
            return new Iterable<String>() {
                public Iterator<String> iterator() {
                    List<String> shuffled = new ArrayList<>(Arrays.asList(words));
                    Collections.shuffle(shuffled, new Random(47));
                    return shuffled.iterator();
                }
            };
        }
    public static void main(String[] args) {
            MutilIterator mi = new MutilIterator();
           //默认的迭代器 for (String String : mi) {
                System.out.print(String + " ");
            }
            System.out.println();
           //反向迭代器 for (String String : mi.reverseIterator()) {
                System.out.print(String + " ");
            }
            System.out.println();
            //随机迭代器 for (String String : mi.randomized()) {
                System.out.print(String + " ");
            }
        }/*Output:
      May I get offers this summer. 
      summer. this offers get I May 
      I this offers summer. May get 
    *///
    

    结论:Java容器中,所有的Collection子类会实现Iteratable接口以实现foreach功能,Iteratable接口的实现又依赖于实现了Iterator的内部类(参照LinkedList中listIterator()和descendingIterator()的JDK源码)。有的容器类会有多个实现Iterator接口的内部类,通过返回不同的迭代器实现不同的迭代方式。

    四,日期格式化相关
    myData = “2014-2-3”
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
    //把字符串解析为date
    SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd");
    Date date = sdf.parse(myData);
    String show_date = simpleDateFormat.format(date);

    五,模拟器相关
    1 首先,配置过程https://jingyan.baidu.com/article/75ab0bcb9ce311d6874db254.html
    说点不一样的

    image.png
    把变量移动到带百分号的后面,这里我配置的叫android。配置在最后不起作用,至于为什么,我也不知道。
    2 木木我在Mac adb connect 127.0.0.1:5555
    在windows就要 adb connect 127.0.0.1:7555

    相关文章

      网友评论

          本文标题:android杂文

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