android小知识点

来源:互联网 发布:电信会屏蔽哪些端口 编辑:程序博客网 时间:2024/06/08 06:46

1. 在tablayout中由于tab条目较少显示成这个样子

由于tab条目较少
将app:tabGravity=”center”改为app:tabGravity=”fill”

2. viewpager的条目是否可见

public void setUserVisibleHint(boolean isVisibleToUser) {        super.setUserVisibleHint(isVisibleToUser);        Log.e("sout", "setUserVisibleHint: "+isVisibleToUser );    }

3. retrofit2.3想要使用

GsonConverterFactory.create()和RxJavaCallAdapterFactory.create()
必须要添加:
compile ‘com.squareup.retrofit2:converter-gson:2.3.0’
compile ‘com.squareup.retrofit2:adapter-rxjava:2.3.0’

4. 在XML中InflateException

<View 的V一定要大写,小写会错,但是不会报错。android.view.InflateException: Binary XML file line #36: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

5.定时操作

除此之外还有其他方式定时。

new Timer().schedule(new TimerTask() {                    @Override                    public void run() {                        //这里面子线程执行                        if (swipeRefreshLayout.isRefreshing()) {                            handler.sendEmptyMessage(0);                        }                    }                },5000);

6.TextView设置字体

这里写图片描述

7.获取cache文件夹大小

PS:File file = new File(String.valueOf(getContext().getCacheDir()));/**        * 获取文件夹大小        * @param file File实例        * @return long           */         public static long getFolderSize(java.io.File file){            long size = 0;            try {              java.io.File[] fileList = file.listFiles();                 for (int i = 0; i < fileList.length; i++)                 {                     if (fileList[i].isDirectory())                     {                         size = size + getFolderSize(fileList[i]);                    }else{                         size = size + fileList[i].length();                    }                 }          } catch (Exception e) {              // TODO Auto-generated catch block              e.printStackTrace();          }            //return size/1048576;            return size;        }   

8.将long数据自动转化为kb、mb、gb

import android.text.format.Formatter;String fileSize = Formatter.formatFileSize(context, long);

9.删除指定目录下文件及目录

    /**     * 删除指定目录下文件及目录     * @param deleteThisPath     * @param filePath     * @return     */    public void deleteFolderFile(String filePath, boolean deleteThisPath) {        if (!TextUtils.isEmpty(filePath)) {            try {                File file = new File(filePath);                if (file.isDirectory()) {// 处理目录                    File files[] = file.listFiles();                    for (int i = 0; i < files.length; i++) {                        deleteFolderFile(files[i].getAbsolutePath(), true);                    }                }                if (deleteThisPath) {                    if (!file.isDirectory()) {// 如果是文件,删除                        file.delete();                    } else {// 目录                        if (file.listFiles().length == 0) {// 目录下没有文件或者目录,删除                            file.delete();                        }                    }                }            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }

10.配置Butterknife

有两个,不然空指针

 compile 'com.jakewharton:butterknife:8.7.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'

11.用while遍历二维数组

        int row = 0;        int col = 0;        int dp[][] = new int[4][4];        while(row<array.length){            dp[row][col] = 9;            col++;            if (col == array[row].length){                row++;                col = 0;            }        }

相较于两个for的话,这种占用内存比较小

12.反转ArrayList

Collections.reverse(list);//使用Collections的reverse方法,直接将list反转

13.栈和队列

栈:先入后出
队列:先入先出
push:入栈
pop:出栈

14.斐波那契数列

1、1、2、3、5、8、13、21、34、……
F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

15.进制转换

java进制转换java中进行二进制,八进制,十六进制,十进制间进行相互转换      十进制转成十六进制:Integer.toHexString(int i)十进制转成八进制Integer.toOctalString(int i)十进制转成二进制Integer.toBinaryString(int i)十六进制转成十进制Integer.valueOf("FFFF",16).toString()八进制转成十进制Integer.valueOf("876",8).toString()二进制转十进制Integer.valueOf("0101",2).toString()

16.Parcelable和Serializable

将对象的引用传给Activities或者Fragments需要用到,
Serializable:使用简单,实现Serializable接口即可。
过程满,产生许多临时对象,容易出发垃圾回收。(反射)
Parcelable: 使用复杂,多写许多代码,速度快。

17.函数的重载与返回值无关

18.一行初始化ArrayList

ArrayList<String> places = new ArrayList<String>(Arrays.asList("Buenos Aires", "Córdoba", "La Plata"));

19.ArrayList的排序,反转,一行初始化

        ArrayList<Integer> integers = new ArrayList<>(Arrays.asList(9,8,7,6,5,4,32,2,1,5));//一行初始化        Collections.sort(integers);//排序,默认升序        Collections.reverse(integers);//反转        //自定义排序        Collections.sort(integers, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                //返回正数,o1在o2前面                //返回负数,o1在o2后面                return (o1-o2)==0 ? (o2-o1):(o1-o2);            }        });

19.利用ArrayList来排序map

//map里面放的是Map.EntryArrayList<Map.Entry<Integer, Integer>> list = new ArrayList<>();        //map.entrySet()可以返回一个集合        Set<Map.Entry<Integer, Integer>> entries = map.entrySet();        list.addAll(entries);        Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {            @Override            public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {                o1有getValue方法                return 0;            }        });

20.Hashmap和LinkedMap

Hashmap往里面put,它并不是按照put的顺序排放的
LinkedMap总是按照put的顺序排放。

原创粉丝点击