
Android基础
网络卷毛
这个作者很懒,什么都没留下…
展开
-
mac studio显示项目依赖关系
项目依赖关系原创 2022-06-01 16:43:28 · 110 阅读 · 0 评论 -
多线程(二) 线程种类
Thread.join():线程堵塞,调用该方法,则调用的线程执行完线程逻辑,其它线程才可以执行它的逻辑Thread.yeild():线程让步,放弃线程的执行权,但是还可以立马获取到执行权...原创 2020-03-02 14:27:07 · 283 阅读 · 0 评论 -
Android9.0 详解Activity的setContentView()方法
一.源码分析 public void setContentView(View view) { getWindow().setContentView(view); initWindowDecorActionBar(); }Activity把setContentView()的实现交给了getWindow(),看下其实现 public Window getWindow() { return mWindow; } fi原创 2020-12-17 17:45:00 · 358 阅读 · 0 评论 -
Android9.0 AsyncTask源码分析
一.基本使用public class MainActivity extends AppCompatActivity { private static final String TAG = MainActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);原创 2020-12-16 12:45:52 · 146 阅读 · 0 评论 -
Android Handler源码解析
一.Handler使用1.在主线程中基本使用 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Handler handler = new Handler(); handler.post(new R原创 2020-12-11 18:35:16 · 129 阅读 · 0 评论 -
DataBinding的使用
一.xml文件初始化<?xml version="1.0" encoding="utf-8"?><layout> <data> <variable name="user" type="com.hz.structure.mvvp.UserBean" /> </data> <RelativeLayout xmlns:android=原创 2020-12-10 16:10:46 · 151 阅读 · 0 评论 -
项目MVVM模式框架
MVVM模式框架原创 2020-12-09 17:23:18 · 162 阅读 · 0 评论 -
项目MVP模式框架
MVP模式原创 2020-12-07 18:14:30 · 229 阅读 · 0 评论 -
Java 排序算法
1.冒泡排序 /** * 冒泡排序 * @param array */ public static void bubbleSort(int[] array) { for (int i = 0; i < array.length-1; i++) { for (int j = 0; j < array.length -1- i; j++) { if (array[j] > arr原创 2020-12-07 14:04:54 · 73 阅读 · 0 评论 -
Java实现二叉搜索树
/** * 二叉搜索树 */public class BinaryTree implements ITree<BinaryTree.Node> { public Node root; public BinaryTree() { } /** * 插入 * * @param data * @return */ @Override public boolean insert(int data.原创 2020-12-01 11:20:01 · 110 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来...转载 2020-02-28 14:31:57 · 105 阅读 · 0 评论 -
RecyclerView ItemTouchHelper使用
更新中原创 2019-12-12 11:23:35 · 134 阅读 · 0 评论 -
List的浅拷贝和深拷贝
浅拷贝1、遍历循环复制List<Person> destList = new ArrayList<Person>(srcList.size()); for(Person p : srcList){ destList.add(p); }2、使用List实现类的构造方法List<Person> destList = new ...原创 2019-12-12 09:47:46 · 379 阅读 · 0 评论 -
Math常用方法
public class Demo{ public static void main(String args[]){ /** *Math.sqrt()//计算平方根 *Math.cbrt()//计算立方根 *Math.pow(a, b)//计算a的b次方 *Math.max( , );//计算最...原创 2019-11-14 09:58:56 · 135 阅读 · 0 评论 -
RecyclerView的滑动监听
allAppRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { ...原创 2019-11-14 09:34:30 · 418 阅读 · 0 评论 -
Java集合(二) HashSet和LinkedHashSet
一.概述Hashset的Set的实现类,底部是通过Hash函数来指向地址,Hashset只能存储唯一值,需要实现HashCode和Equals方法来判断其唯一性,可以存储null值,取值不能保证其顺序LinkedHashSet是HashSet的子类,它和HashSet不同之处在于存储在Hash表中的元素,其元素是通过链表的方式维护其插入顺序的二.举例 class Al...原创 2019-07-29 17:11:58 · 147 阅读 · 0 评论 -
为什么说Java中只有值传递
值传递(pass by value): 是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。引用传递(pass by reference): 是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数为什么说Java只有值传递?因为在对象传递给函数中,传递的是对象的地址,并将Copy了一份,两个对...原创 2019-07-17 16:57:14 · 126 阅读 · 0 评论 -
Java集合(三)TreeSet
一.简介TreeSet是以红黑树的结构存储数据的集合,它能对数据作出顺序排序二.TreeSet的方法TreeSet<String> treeSet = new TreeSet<String>(); treeSet.add("haha"); treeSet.add("love"); treeSet.add("me"...原创 2019-08-06 09:33:29 · 221 阅读 · 0 评论 -
String为什么是不可变类
众所周知, String 是一个不可变的,由 final 修饰的类。那么它的不可变性体现在哪里呢? 看下面一段简单的代码: String str= "123"; str = "456";相信应该没人会觉得这段代码是错误的,那么这符合 String 的不可变性吗?String 的不可变性是如何体现的? 不可变性的好处是什么?带着这些疑问,read the fuck source c...转载 2019-07-17 16:19:38 · 213 阅读 · 0 评论 -
Callable和Future,FutureTask的使用
Task task = new Task(); ExecutorService executorService = Executors.newCachedThreadPool(); Future<String> future = executorService.submit(task); try { //阻...原创 2019-07-15 14:24:49 · 150 阅读 · 0 评论 -
RxJava的初步使用
1.普通订阅 Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> em...原创 2019-07-04 16:32:41 · 152 阅读 · 0 评论 -
Java集合(十一) IdentityHashMap
一.简述IdentityHashMap和HashMap的功能基本一样,唯一的区别就是只有在两个key是=的时候,才能判定他们是相同的数据二.例子 hashhMap.put("haha", "hu"); hashhMap.put("haha", "you"); hashhMap.put(new String("nihao "),"lala"); ...原创 2019-08-07 11:18:05 · 181 阅读 · 0 评论 -
SQLiteDatabase基本使用
public class DatabaseHelper extends SQLiteOpenHelper { private static final String TABLE_NAME = "Table_data"; public DatabaseHelper(Context context, String name, SQLiteDatabase.CursorFacto...原创 2019-07-04 10:04:14 · 1524 阅读 · 0 评论 -
Java集合(四) EnumSet
一.简述EnumSet是用于存储枚举类的集合,不可存储Null,内部以位向量的方式存储,对内存消耗很小,不能直接创建该集合,内部构造器是private二.例子 //创建一个枚举类的Set EnumSet<Seanson> enumSet = EnumSet.allOf(Seanson.class); for (Seanson seanso...原创 2019-08-06 10:08:46 · 162 阅读 · 0 评论 -
Java集合(五) ArrayList
一.概述ArrayList实现了List接口,内部是通过数组实现的,是动态可变的集合二.例子ArrayList<String> list = new ArrayList<>(); list.add("nihao"); list.add("haha"); list.add("hehe"); list...原创 2019-08-06 10:59:13 · 98 阅读 · 0 评论 -
Java集合(六)PriorityQueue
一.概述实现了接口Queue,是队列的实现类,但不同队列的是,元素的排序不一定按加入的元素顺序排列,需要像TreeSet一样,实现定制排序二.例子 PriorityQueue<String> priorityQueue = new PriorityQueue<>(new Comparator<String>() { @Ove...原创 2019-08-06 14:57:34 · 116 阅读 · 0 评论 -
Java集合(七) ArrayDeque实现类
一.概述ArrayDeque实现了Deque接口,Deque是个双端队列,支持首位插入,ArrayDeque是Deque的实现类二.例子 ArrayDeque<String> arrayDeque = new ArrayDeque<>(); arrayDeque.add("haha"); arrayDeque.addFirs...原创 2019-08-06 16:43:50 · 184 阅读 · 0 评论 -
Java集合(八)LinkedList
一.概述LinkedList也是支持随机访问的集合,其底部由链表来维护,同时也实现了D eque接口,是双端队列二.例子 LinkedList<String> list = new LinkedList<>(); list.add("haha"); list.add(0, "you"); list.addFirs...原创 2019-08-06 17:37:59 · 130 阅读 · 0 评论 -
Java集合(九)HashMap
一.概述HashMap是以Hash表来存储Key的集合,Key可为null,value可为多个null二.例子HashMap<String, String> hashMap = new HashMap<>(); hashMap.put("1", "huhue"); hashMap.put("3","haha"); ...原创 2019-08-06 18:40:00 · 160 阅读 · 0 评论 -
Java集合(十) WeakHashMap
一.概述WeakHashMap是对key有弱引用对情况下,会自动对把数据删除二.例子 WeakHashMap<String, String> weakHashMap = new WeakHashMap<>(); weakHashMap.put(new String("1"), new String("haha")); we...原创 2019-08-07 10:33:38 · 129 阅读 · 0 评论 -
多线程(一) 创建多线程
1.继承Thread,重新run方法2.实现Runnable方法3.FutureTask实现Future public void testCallBack() { final FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() { ...原创 2019-08-19 16:49:55 · 118 阅读 · 0 评论 -
Service解析(三)远程Service
一.什么是远程Service远程Service是在新进程中启动Service,Activity通过AIDL方式来跨进程通信(IPC)二.启动远程Service <service android:name="com.hezhong.service.MyService" android:process=":newThread" ...原创 2019-02-14 16:56:40 · 251 阅读 · 0 评论 -
Lottie动画(二)Lottie动画制作
一、工具安装安装完Adobe After Effects,记得安装插件bodymovin。二、AE开始制作打开AE,进入主界面,使用Ctrl+i快捷键导入图标:使用Ctrl+N快捷键新建一个合成:左键按住左上方的ic_launcher.png图标拖动到下方操作框中来:选择下载的图标,使其位置上移一段距离:左击“位置”左边的圆框,确定图标起点位...原创 2019-03-19 15:13:59 · 5779 阅读 · 0 评论 -
SQLite数据库
一.继承SQLiteOpenHelperpublic class DatabaseHelper extends SQLiteOpenHelper { private static final String TABLE_NAME = "Table_data"; public DatabaseHelper(Context context, String name, SQLi...原创 2019-04-26 16:07:12 · 260 阅读 · 0 评论 -
单元测试(二)JUnit框架
一.JUnit的使用public class ExampleUnitTest { @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); }}仅支持纯Java代码,直接运行就是一次单元测试二.JUnit注解@Test说明该方法是测...原创 2019-04-09 15:57:41 · 336 阅读 · 0 评论 -
Android动画(三) Interpolator插值器
一.常用插值器AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速 AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速 AnticipateInterpolator 开始的时候向后然后向前甩 An...转载 2019-01-29 15:39:28 · 165 阅读 · 0 评论 -
Android动画(二)补间动画的XML实现
一、概述Android的animation由四种类型组成:alpha、scale、translate、rotate,文件一般存放在res/anim文件夹下,访问时采用R.anim.XXX.xml的方式。二、scale标签——调节尺寸1、属性android:fromXScale 起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0...转载 2019-01-29 14:54:36 · 1076 阅读 · 0 评论 -
View的绘制(二)Paint,Canvas和Path的介绍
文章目录一 View 二 Paint 2.1 颜色处理 2.2 文字处理 2.3 特殊处理 三 Canvas 3.1 界面绘制 3.2 范围裁切 3.3 集合变换 四 Path 4.1 添加图形 4.3 画线(直线或曲线) 4.3 辅助设置和计算 文章源码DrawView WaveView RippleLayout LabelImage...原创 2019-01-25 14:37:44 · 427 阅读 · 0 评论 -
Android动画(一) 帧动画
1. Drawable 动画Drawable 动画其实就是 Frame 动画(帧动画),这种动画的实质其实是 Drawable2. Drawable 动画第一种实现方式这种动画的 XML 定义文件一般放在 res/drawable/ 目录下,其属性具体如下:<animation-list> 必须是根节点,包含一个或者多个<item>元素,属性有:andr...原创 2019-01-29 11:23:02 · 149 阅读 · 0 评论 -
View的绘制(一) 基础
一、onDraw()创建Paint对象,重写onDraw(),把绘制的代码写在onDraw()里面。 二、Canvas.drawXXX() 和 Paint 基础1.Canvas 类下的所有 draw- 打头的方法,例如 drawCircle() drawBitmap()。2.Paint 类的几个最常用的方法。具体是:drawXXX() 系列方法和 Paint 的基础能够应付简...转载 2019-01-25 10:01:27 · 324 阅读 · 0 评论