自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 UnStickLiveData-非粘性的LiveData,解决粘性

【代码】UnStickLiveData-非粘性的LiveData,解决粘性。

2023-04-01 16:20:20 106

原创 3个线程交替执行

【代码】3个线程交替执行。

2023-03-29 23:13:11 155

原创 自定义Layout-自定义布局-自定义ViewGroup

自定义ViewGroup getChildMeasureSpec

2023-03-04 23:09:44 337

原创 单链表反转

单链表反转

2023-02-11 15:41:07 55

原创 java-建造者模式

package com.baichuan.studyapp.test.shejimoshi.JianZaoZhe;import android.widget.GridLayout;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax..

2021-07-24 15:43:21 81

原创 求二叉树深度

package com.baichuan.studyapp.test.shujujiegou;public class DiGui { public static void main(String[] args) { Node root = new Node(); Node childLeft = new Node(); Node childRight = new Node();//=============================.

2021-07-17 16:51:47 90

原创 通过栈实现简单计算器

package com.baichuan.studyapp.test.shujujiegou;import java.util.HashMap;import java.util.Map;public class StackTest { public static void main(String[] args) { Calculator calculator = new Calculator(); System.out.println(calculat.

2021-07-11 15:46:17 308

原创 求二叉树的深度-Java

public class Node{ public Node left; public Node right; public int getLevel(Node node) { int level = 0; if (null == node) { return level; } LinkedList<Node> nodeList = new LinkedList(); .

2020-12-13 21:51:26 107

原创 创建双向链表-Java实现

public class Test { public static void main(String[] args){ int i =0; Node headNode = null; Node lastNode = null; do { Node newNode = new Node(i); if (lastNode == null){ .

2020-11-28 16:08:51 476

原创 Retrofit 源码解析

先说下,本文是基于 Retrofit 2.3.0版本解析的implementation 'com.squareup.retrofit2:retrofit:2.3.0'欢迎大家批评指正文中错误,多多交流,谢谢先从Retrofit的创建说起,如下 Retrofit retrofit = new Retrofit.Builder() .baseUrl("接口api根地址") .build();先看下使用了建造者.

2020-06-22 23:59:44 744 1

原创 Gson TypeToken 原理解析

假设有个User类,我们想用Gson将一个字符串解析成User类,那么可以像下面这样,比较简单:Gsongson =newGson();User user = gson.fromJson("user对象json字符串",User.class)但是如果是一个User数组的字符串呢,我们希望解析成List<User>类型的一个数组这个List<User>不能直接.class,我们可以用下面这个方法public <T> T fromJson(St...

2020-06-21 17:26:30 1212 3

转载 Java注解

来源:秒懂,Java 注解 (Annotation)你可以这样学Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的...

2020-06-13 18:39:07 174

原创 QQ侧滑删除效果 RecyclerView侧滑删除 ,修改

先看效果:可侧滑删除修改的的 SlideRecyclerView ,继承Recycler View,重写 onTouchEvent方法public class SlideRecyclerView extends RecyclerView { private String TAG = "SlideRecyclerView"; private int mMaxScroll...

2019-08-31 23:33:21 600 5

原创 自定义一个简易的RecyclerView的LinearLayuoutManager

package com.example.myapplication1.view;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;public class MyLinearLayoutManager extends Recycle...

2019-08-17 01:06:19 159

原创 自定义View时wrap_content不起作用?

view显示到屏幕上,大概来讲,需要走如下的流程:从调用方法的角度来看,即需要走三个方法:measure(),layout(),draw(),这三个方法是view的方法,走完这三个方法view就会显示到屏幕上而且这三个方法是final修饰的,系统不允许我们重写这些方法,要求我们遵循这个框架流程,但是又不能不让我们自定义自己的测量,布局和绘画过程,所以给出了onMeasure(),onLayou...

2019-08-09 11:47:14 426

原创 NDK项目示例

欢迎批评指正,谢谢。准备:Androidstudio(当前是3.3.2版本),NDK工具包(下载后需要配置到studio中)1.新建类TestNDK.java(存放的位置随意),如下public class TestNDK { static { System.loadLibrary("testndk"); } public native...

2019-08-07 18:22:35 433 1

原创 ListView/GridView/RecyclerView 加载item布局异常

RecyclerView 或者其他列表view,在使用linearlayout 的 weight时,会出现问题//问题设计到的因素:1 item里面的线性布局,复选框,刷新列表public LanguageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {//这种情况会导致列表 忽长忽短,但...

2019-05-30 21:25:26 183

原创 TextInputLayout总结

1,app:errorEnabled属性,下图是没有设置app:errorEnabled属性的情况(app:errorEnabled默认为false)下图设置app:errorEnabled属性为true的情况,可以看到内容(我是EditText的内容)下方多出了一块蓝色区域,该区域用于展示错误信息。上面的两张图是 TextInputLayout和EditText都是...

2019-05-29 23:39:56 572

原创 不压缩加载大图,滑动查看,具有fling效果

参考博客,http://blog.csdn.net/lmj623565791/article/details/49300989public class LargeImageView extends View implements View.OnTouchListener,GestureDetector.OnGestureListener { private BitmapRegio...

2019-05-21 10:01:05 160

原创 Java两个线程交替执行-笔记

如有错误或不妥,欢迎批评指正,谢谢package com.newandroid.www.demo2;/** * 首先,注意,首先要明确,明确!: * wait(),notify(),notifyAll(),这几个方法只能被同步监听锁对象来调用, * 即:线程们所共同操作的那个对象,而不是线程自己调用这些方法。 * 因为这些方法都是非静态的,所以要有线程们所共同操作的那个对象。...

2019-04-14 17:07:17 706

原创 获取View(ViewGroup)的深度

//这里需要获取size后再循环,不然,一边循环,一边后面循环到的ViewGroup类型的View还有子孩子的话,// 会继续添加,下面的第一层for就会一直循环(如果使用i < queue.size()的方式的话)//这里是获取层级,所以需要在level++后,将list中当前的View给遍历完,相当于遍历的是当前的一层//如果遍历完当前List中的view(当前的一层)后,whil...

2019-04-13 13:39:58 994

原创 二分查找法

/** * 二分查找算法 * 返回int * * 查找条件: * 顺序存储,而且是从小到大排列好顺序 */ public static int binarySearch(int[] arr ,int key){ int left = 0; int right = arr.length-1; ...

2019-04-09 16:38:35 1774

原创 快速排序详细分析(Java实现)

/** * 排序过程 * 1,找一个基准数,找数组内的任意一个数都行,一般都是以数组第一个数为基准数 * 2,从数组末位向前循环找比基准数小的,找到了先停下,也就是记录当前的索引 * 从数组开端向后循环找比基准数大的,找到了先停下,也就是记录当前的索引 * 3,将第二步的两个索引的位置的数值交换,这样比基准数大的就到了基准数的后面, 比基准数...

2019-03-14 18:42:04 184

原创 Android studio运行Main方法

实现步骤如下:1、当前项目右键-&gt;new-&gt;Module-&gt;Java Library2、修改创建的Java Library类型的moudle的build.gradle文件创建的java类型的moudle的build.gradle文件修改为下面这样apply plugin: 'java'apply plugin: 'application'mainC...

2019-03-12 16:57:35 2318

原创 Activity启动过程分析

原文:Android中Activity启动过程探究 https://www.cnblogs.com/kross/p/4025075.html这篇文章是对上面文章的总结1.因为Android也是 Java程序,所以 必然有一个Main方法入口,这个入口,就是在ActivityThread中,因此首先 调用android.app.ActivityThread.main()方法2....

2019-03-11 16:15:09 339

原创 ViewRoot/ViewRootImpl分析

原文 Android中的ViewRootImpl类源码解析 http://blog.csdn.net/qianhaifeng2012/article/details/51737370这篇文章是对上面文章部分内容的总结:ViewRoot和ViewRootImpl,从字面上来看,还以为ViewRootImpl是ViewRoot的实现, 其实不是的。ViewRoot是Android2.2以前的...

2019-03-09 16:29:22 1110 2

原创 关于Activity setContentView()方法

关于Android setContentView1.setContentView 方法,从下面的代码可以看出,真正setContentView的是Window,而这个Window的实现就是PhoneWindow public void setContentView(int layoutResID) { getWindow().setContentView(layoutResI...

2019-03-08 15:19:43 448

原创 java.lang.UnsatisfiedLinkError: Couldn't load xxx(so文件名称) from loader

java.lang.UnsatisfiedLinkError: Couldn't load xxx(so文件名称)from loader dalvik.system.PathClassLoader[dexPath=/data/app/xxx(包名)-1.apk,libraryPath=/data/app-lib/com.soucross.mvs-1]: findLibrary returned ...

2019-03-07 15:46:46 827

原创 关于Handler

1,四个概念Handler,Looper,Message,MessageQuene2,消息传递机制的大致流程Handler调用sendMessage()发送Message,传递给MessageQuene,Looper不断循环MessageQuene去除Message, 交给Handler的handleMessage()方法处理Message。3,几个注意点3.1子线程是不能直...

2019-03-06 19:38:10 405

原创 Java 冒泡排序和选择排序

冒泡排序public class Test { public static void main(String[] args) {        //System.out.print("ddddddd");        int[] arr = {23,48,56,43,4,2,23,78,90,90,93,88};        bubbleSort(arr);    }...

2018-09-08 17:07:55 214

原创 Android bindService 调用服务Service内部的方法

通过bindService的方式可以调用Service内部的方法,也是实现远程服务的基础。实现调用服务内部的方法,需要实现服务的onBind(Intent intent)方法,返回一个IBinder的实现类对象。而Binder类已经实现了IBinder接口,所以只需集成Binder类即可,代码如下1.创建Service1.1创建Service类public class DemoService ex...

2018-07-05 13:09:40 913

原创 Error:Plugin with id 'com.android.application' not found.

遇到此问题后,试着查看一下项目的Gradle 是否配置,如下

2018-06-06 14:37:03 353

原创 Android 增量更新

增量更新的目的: 减少版本升级需要下载的的文件的大小,节省流量大概流程:1.服务器端通过相关工具对比旧版本和新版本,生成差异化升级包,(简单来说就是新版本和旧版本之间的区别,比如旧版本apk大小为5M,新版本为8M,那升级包的大小的范围就是3M(8-5)&lt;  size &lt; 8M的一个文件)2.客户端使用代码(对应window系统,也有相关工具)将升级包和旧版本的apk合并成新版的apk...

2018-06-04 23:25:26 215

原创 自定义圆形进度条(旋转进度+百分比)

欢迎大家批评指正import android.animation.ValueAnimator;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.R...

2018-06-02 13:50:34 1684

原创 使用selector实现按压控件改变背景颜色

可大致分为2步1.在drawable文件夹下创建以selector为根标签的文件 点击drawable,右键new --&gt; Drawable resource file,Root element 一栏 填写selector,创建文件。 指定按下时的颜色或图片  和 非按压时的颜色和图片,如下:&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;s...

2017-07-18 15:15:59 782

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除