自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(84)
  • 资源 (54)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android高级UI详解汇总

Android高级UI开发(一)RecyclerView控件的基本使用Android高级UI开发(二)RecyclerView控件使用----列表项的单击事件、添加(删除)列表项Android高级UI开发 ( 三 )RecyclerView控件---高级进阶之自己绘制列表分隔线...

2020-09-05 08:01:44 3819

原创 FFMPEG(三)编译脚本中的FLAGS如何编写

编译脚本

2022-07-17 17:13:15 1212 1

原创 FFMPEG(二) FFMPEG编译出的库说明

FFPGE编译出的库说明

2022-07-15 15:05:12 1266

原创 线程并发相关的原子操作类

#线程并发原子操作类何为原子性,就是一次性操作完成,在操作变量的时候,其它线程不能操作变量,也就是我们之前说的synchronized同步关键字的作用。这节我们不用synchronized,而是用系统API中的原子类,今天我们以其中一个AtomicInteger类为例来讲解。比如我们有20个人同时卖票,每人卖1000张,问最后总共卖了多少张?这里先给出答案:20000张。我们来看下代码如何编写,20个人相当于20个线程,然后每个线程内for循环1000次,每次给票数加1,那么java代码就是:模拟2

2022-01-31 00:00:00 1288

原创 线程范围内共享变量,使用ThreadLocal API来实现

1.回顾上节我们讲了线程共享范围内的共享变量,我们使用了一个Map(K,V),其中Key为正在执行的线程对象,value存储的是线程操作的变量,如一个int型的data,我们以key来区分是哪一个对象所操作的变量。这一节我们将使用ThreadLocal 这个线程范围内共享变量的专用API来实现。2.使用ThreadLocal实现2.1 使用ThreadLocal实现基本数据类型在线程范围内共享使用ThreadLocal实现线程范围内的共享变量。代码如下:public class ThreadSha

2022-01-24 14:12:41 1242

原创 线程范围内的共享变量

1. 线程范围内的共享变量的概念 假设有2个线程,一个全局变量 int data。2个线程内的代码共用这一个变量的声明(data),但它们操作data时,data的值在这2个线程里是独立的,互不影响的。我们这里所说的互不影响,不是我们之前说的syncronized,(线程1先修改data值,读取data值,释放锁后,线程2才可修改data和读取data,这样的话data最终的值还会变为线程2最后修改的值)。我们现在要实现的是,线程1修改了data=1, 线程2也修改了同一个data变量...

2022-01-22 14:04:04 3670 1

原创 线程间的通信notify与wait

今天我们来聊一下线程间的通信。这里的通信指的是通俗意义上的“通个信儿”或者“通个气儿”,不是说要传递什么数据,更多的含义是“通知对方”。我们现在来做一个2个动物参与的小游戏,在这里两个动物分别是猫和狗。先让猫跑10步,然后狗才能跑步,也是跑10步。要注意的是: 当猫10步还未跑完的期间,狗决不能跑动,只有当第1个猫把10步跑完后,狗才能开始跑,也是跑10步。我们用代码如何来模拟这个过程呢?我们简单的执行2个for循环便是:package testFuture;public class Th

2022-01-07 23:26:53 1295

原创 搭载rtmp直播服务器

这次我们搭建一个rtmp直播服务器,用于电脑或手机直播推流到服务器,然后其他终端如电脑或手机可以观看直播的视频画面。 我们这里用电脑录屏软件将实时录制的电脑屏幕画面直播给其它人看。总共需要3部分,第一,录屏软件录制电脑屏幕,并传递画面流到服务器; 第二,服务器rtmp搭建,应能接收来自录屏软件上传的画面;第三,视频播放器客户端能连接到rtmp服务器,接收rtmp服务器推送的视频流,从而可实时观看第一部分录屏软件的实时画面。这里最核心的就是第二部分,搭建rtmp服务器。1.下载ngin...

2021-10-11 21:33:54 1926 1

原创 cmake编译NDK初体验

本文用一个demo验证AndroidStudio如何编译生成一个C++动态库文件(so文件)给Java应用层使用。然后这个so库内部又如何调用一个预有so库中的C语言函数。1. 新建一个NDK工程1.1 新建一个android studio Native C++工程在main/cpp目录下默认有一个native-lib.cpp,还有一个CMakeList.txt文件(编译脚本),目录下默认有一个native-lib#include <jni.h>#...

2021-09-02 22:12:39 2190 1

原创 线程同步工具Exchanger

package cn.itcast.heima2;import java.util.concurrent.Exchanger;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class ExchangerTest { public static void main(String[] args) { ExecutorService service...

2021-08-02 09:50:30 1064

原创 Android事件分发

梳理androidUI事件分发流程,解决appUI事件冲突问题:当一个大按钮作为背景,上面放一个小按钮,这时点击小按钮,小按钮是否会响应单击事件?答案:有可能背景响应了 单击事件,而让你的预期大跌眼镜。这里简单做以下笔记:假设背景容器布局是RelativeLayout,上面有一个Button。OnInterceptTouchEvent : RelativeLayout容器布局特有的事件分发函数onTouchListener 接口的onTouch函数onTouchEventonDi..

2021-08-02 09:49:36 1091

原创 用BlockQueue实现线程间的通信,子线程执行完了主线程执行,主线程执行完了子线程执行

package cn.itcast.heima2;import java.util.Collections;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.atomic.AtomicInteger;public class BlockingQueueCommunication { /** *...

2021-08-02 09:48:13 1114

原创 Hashmap与HashSet的关系

Hashset内部是 由Hashmap构造的,只用到了Hashmap的key。见Hashset的源码:public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ static final long serialVersionUID = -5024744406713321676L; priva

2021-06-19 19:49:29 1415

原创 BlockQueue阻塞队列实现之前的消费者生产者模式condition

package testFuture;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class BlockingQueueTest { public static void main(String[] args) { final BlockingQueue queue = new ArrayBlockingQueue(3); ...

2021-06-19 19:21:44 1145

原创 线程工具Semaphore

Semaphore信号灯,也是实现多线程间互斥的。多个线程只有拿到了这盏灯,才能执行下面的代码,相当于lock、sychronized; 当一个线程拿到了这盏灯后,其它线程将暂停等待,直到这个线程执行完毕释放灯。当然信号灯可以有多盏灯,如有3盏灯,然后10个线程去执行代码,这期间只能有3个线程拿到灯,可以执行。当有线程释放了1个灯后,其它7个线程当中才能有一个线程冲过去抢到灯。示例代码如下:package cn.itcast.heima2;import java.util.concurrent.

2021-05-15 17:34:58 1208

原创 线程工具CyclicBarrier

package testFuture;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CyclicBarrierTest { public static void main(String[] args) { ExecutorService servi...

2021-05-15 17:12:11 1175

原创 一个经典的多线程condition使用实例代码,请评论

class BoundedBuffer {final Lock lock = new ReentrantLock();final Condition notFull = lock.newCondition();final Condition notEmpty = lock.newCondition();final Object[] items = new Object[100];int putptr, takeptr, count;public void put(Object x) throw

2021-05-02 17:20:50 1265

原创 线程-读写锁。

读写锁。我们上次温习了synchronized与Lock.我们遗留了一个问题,就是想让读读不互斥,因为多线程同时读取数据并不会破坏数据。如果能实现读读不用互斥,那将大大提升了多线程读性能。于是我们引入了读写锁ReentrantReadWriteLock。ReentrantReadWriteLock可以专门创建一个读锁和写锁。读锁:读读不互斥,但是读写互斥。 写锁:不但读写互斥,而且写写也互斥。创建一个读写锁 ReadWriteLock rwl = new ReentrantReadWriteLoc.

2021-05-02 15:55:16 1239

原创 线程Lock

我们之前学习了synchronized,今天来介绍一下lock。lock与synchronized一样都是为了多线程在竞争公共资源时,能不发生冲突,就是一个线程获取了锁,就去执行代码块,其它线程只能等待第一个线程执行完同步代码块,才能有机会获取到synchronized锁对象。 lock与synchronized最大的区别是,lock锁的释放需要程序员手动调用unlock,一般放在要同步的代码的最后调用unlock,或者try..catch..finally中的finally里调用unlock。当然,.

2021-04-24 17:30:19 1340

原创 Callable与Futrue.get()等待线程执行完毕

1. 等待一个子线程执行完毕public static void main(String[] args) { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit( new Callable<String>() { public String call() throws Excepti

2021-04-17 19:35:07 2595

原创 线程池回顾

线程池:一个池子里创建1个或多个线程,通常往这个池子里扔进去多个任务,然后多个线程会抢着执行这些任务,如果一群狼共同吃掉这些羊群(多个任务)。1. 创建线程池目前我了解的创建线程池有4种方式: (1)线程池里的线程数是固定不变的;(2)线程池里只有1个线程池;(3)线程池里的线程数是动态变化的;(4)定时执行任务的线程池。接下来我们就依次介绍一下上述4种创建线程池的方式。1.1 线程池里的线程数是固定不变的。 创建方式:ExecutorService threadPoolFixed...

2021-04-11 22:20:50 1288

原创 android项目常见疑问

android笔记:ServiceLifecycleDispatcher: onServicePreSuperOnDestroy中分发了 ON_STOP与ON_DESTROY两个事件,因此自定义类可以感知Service的ON_STOP和ON_DESTROY两个事件,当Serivce执行到生命周期的onDestroy时。...

2021-03-27 16:36:30 1713

原创 java thread study

0. 用runnable创建线程具有面向对象的思想。1. quartz 定时器开源库。3. 多线程间的互斥:(1)多线程间的互斥,用synchronized关键字,两个线程用互斥锁必须用同一个对象才能实现互斥。(2) 两个非静态函数前加synchronized关键字,它们的公用锁是this,就是当前对象实例。(3)静态函数前加synchronized关键字,它用的锁对象是...

2021-03-27 12:00:32 1217

原创 Android性能优化笔记(三)

1. 引用分类(1)强引用: Object o = new Object ,平时用的最多的。(2)软应用: 内存不足时回收,常用于缓存图片(3)弱引用:不管内存是否足,都回收。GC扫描2次就回收,常用于引用activity的context。(4)虚引用:用于跟踪GC回收的通知。 软弱引用与引用队列结合的使用场景: 软引用和弱引用如果与一个引用队列关联起来的话,那么它们所指向的对象被回收后,引用会被保存在引用队列里。 往往通过查询引用队列中是否有值(元素为引用变...

2020-09-02 12:01:08 1653

原创 Android性能优化笔记(并非详细教程) (二) UI绘制优化

1. 减少没有必要的背景。 android:background="@color/white"2. 减少布局层级 2.1 分析层级的工具layout Inspector运行起来一个APP后,然后在android studio工具栏上点击Tool --》layout inspector 就可以显示当前页面的布局层级,用于观察没有必要的嵌套,去优化它们。 2.2 优化方法优化技巧:尽可能用1个容器,若父布局只有1个孩子布局,即该子布局没有兄弟,则可以把当前子布局与父...

2020-07-20 08:51:14 1779

原创 一位35岁老实程序员心魔因委屈而孕育,因失望而长大

在我现在的公司做软件开发真心很累。我来了之后APP从无到有,从分析需求到原型设计,再到接口文档,这些其它岗位的活儿分配给我,我愿意承担,我喜欢,但是唯有一点我不认同,就是把他人的多数问题总是推托给我,而我却孤立无援。 我如果不澄清自己的清白的话那些问题永远是我的,因为没有人愿意去从自身找问题。 引起这些问题的根本原因是什么?怎么会用孤立无援来形容是不是有点夸张...

2020-07-10 23:21:37 1180 11

原创 android性能优化笔记(一)Android启动页优化

主要优化Application onCreate函数里的执行时间,和SplashActivity的启动。1. Application优化经验:(1)Application的oncreate函数里的耗时操作放在线程里去。(2)用到的时候再初始化某些第三方SDK,总之最好不要提前调用某些函数,用到的时候再调用。2. SplashActivity启动页,即第一个页面容易出现绘制前的黑屏或白屏,也就是说先闪一下黑(白)屏才能绘制出SplashActivity的布局界面,解决方法:方法1.

2020-07-07 22:28:12 1998

原创 FFMPEG(一)华为云linux下编译ffmpeg for Android

用clang编译ffmpeg for android

2020-06-29 12:40:15 2584 3

转载 android 使用AIDL语言实现进程间通信

https://user.qzone.qq.com/254904252/infocenter

2020-06-16 22:03:04 1737

原创 Android高级UI开发(四十五)Canvas Path

1. Path概念用Path定义一个图形,然后用canvas.drawPath(...)函数来绘制这个图形。例如绘制一个圆。Path可以绘制各种图形,如二次,三次贝塞尔曲线,圆形、多边形,三角形,五角星等几何形状。public class PathOpView extends View { private Paint mPaint; public PathOpView(Context context) { super(context); mPai

2020-05-18 17:28:11 1856

原创 多线程温习2. 多线程之间的同步

现在我们要启动2个线程,第一个线程打印“gaoxiaowei”中的每一个字符,然后换行; 第二个线程打印“zhangwenbin”的每一个字符然后换行,代码如下:public class TraditionalThreadSynchronized { /** * @param args */ public static void main(String[] args) { new TraditionalThreadSynchronized().init(); } privat

2020-05-14 17:13:59 1780

原创 多线程温习1--创建java线程的两个方法

如何开启一个线程?方法1: Thread thread = new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("1:" + Thread.curre

2020-05-14 16:15:42 1692

原创 Android高级UI开发(四十四)canvas基本知识(2) 裁剪与区域

裁剪:裁剪后,canvas只能在裁剪出的这块rectF矩形上进行绘制。区域:canvas图层上的一块封闭区域,如下rect2这个矩形区域,drawRegion绘制出这个区域。package com.xiaowei.lsn7_canvas;import android.content.Context;import android.graphics.Bitmap;...

2020-04-29 15:18:29 2169 1

原创 Android高级UI开发(四十三)Canvas基本知识(1)

直接贴代码,注释很详细。源码下载:package com.xiaowei.lsn7_canvas;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.gra...

2020-04-29 10:01:58 1771

原创 Android高级UI开发(四十二)canva滤镜

矩阵简述1、定义M*n矩阵。2、矩阵乘法它的意思就是将第一个矩阵A的第一行,与第二个矩阵B的第一列的数字分别相乘,得到的结果相加,最终的值做为结果矩阵的第(1,1)位置的值(即第一行,第一列)。同样,A矩阵的第一行与B矩阵的第二列的数字分别相乘然后相加,结果做为结果矩阵第(1,2)位置的值(即第一行第二列)。矩阵A乘以矩阵B和矩阵B乘以矩阵A的结果是不一...

2020-04-07 23:04:41 1936

原创 android使用代码动态做表格

package com.anyikang.emergency120.aek.activity;import android.annotation.SuppressLint;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.support.v7.app.AppCompatAc...

2020-03-25 19:42:36 2127

原创 Android高级UI开发(四十一)xefmode

public enum Mode { // these value must match their native equivalents. See SkXfermode.h /** * <p> * <img src="{@docRoot}reference/android/images/graphi...

2020-03-17 15:51:43 2015

原创 python安装相关库失败的解决方法及初学常见问题

1. 安装图表库matplotlib失败的解决方法pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simplematplotlib2. 安装 pygalpython -m pip install pygal==1.7

2020-02-06 10:46:30 2023 2

原创 Android高级UI开发(四十)shader渲染器介绍

Shader是什么,Canvas可以绘制图形(圆形、弧形、矩形等),Shader是为这些图形着色的,改变这些图形外观的,例如在一个圆形上将图片贴在圆形上,就可以实现圆形头像控件,在这里BitmapShader改变了圆形这个图形的外观,将图片内容附着到了图形上面。Shader不只有BitmapShader,它总共包括如下Shader:BitmapShader、LinearGradient、Sweep...

2020-02-02 20:08:49 2122

原创 Android Doze模式适配实验记录

QQ交流群:122717260课题:想定时执行一些代码,如每隔4分钟向服务器发送一个数据包。实验1:用TimerTask.机型:vivo android 9.0 V1911A vivoZ5X经常休眠,有时候长几小时。实验2:机型:vivo android 9.0 V1911A vivoZ5X自从Android6.0引入低功耗与待机模式之后,TimerTask就更不能...

2020-01-17 10:23:05 4019

NDK_CMAKE生成so库+调用so库.rar

ndk JNI调用已有so库中的test()函数,然后使用cmake将jni编译成一个share动态库

2021-09-02

_Path_Basic.rar

cavas path实例对应博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/106194583

2020-05-18

Canvas基本知识1.rar

https://blog.csdn.net/gaoxiaoweiandy/article/details/105832787

2020-04-29

Lsn5_Paint_Xfermode_DST.rar

https://blog.csdn.net/gaoxiaoweiandy/article/details/104801535

2020-03-19

Lsn5_Paint_Xfermode_SRC.rar

对应的博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/104801535

2020-03-19

Lsn5_Paint_Xfermode.rar

对应的博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/104801535

2020-03-19

Paint_RadialGradient.rar

对应的CSDN文章:https://blog.csdn.net/gaoxiaoweiandy/article/details/104127732

2020-03-01

Paint_RadarView.rar

博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/104127732

2020-02-19

Shader.rar

BitmapShader、LinearGradient、SweepGradient、RadialGradient、ComposeShader代码用法。参考博客:https://blog.csdn.net/gaoxiaoweiandy/article/details/104127732

2020-02-02

CircleProgressBar.rar

csdn对应的博客地址是:https://blog.csdn.net/gaoxiaoweiandy/article/details/103887605

2020-01-08

measure.rar

源码有对应的博文。详细讲解了自定义ViewGroup的测量过程与摆放过程。仅供参考。源码可以经过作者测试,可以运行。

2019-12-01

ViewGroup事件分发Demo实验代码

ViewGroup事件分发Demo实验代码,结合博客地址讲解:https://blog.csdn.net/gaoxiaoweiandy/article/details/89882161

2019-05-07

android View事件分发机制实验代码

本源码结合博客地址: https://blog.csdn.net/gaoxiaoweiandy/article/details/89840433 讲述了View的事件分发机制以及如何阅读与分析源码。

2019-05-06

动画框架:视差效果。解析XML里的view,然后获取自定义属性

动画框架:自定义inflator,解析XML文件,获得布局中的每一个VIEW实例

2019-04-24

动画框架Android滚动让系统控件也可以识别自定义属性

让系统控件如Imageview也可以识别自定义属性,并执行动画。博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/89379459

2019-04-22

转场动画之多组动画同时执行

转场动画之多组动画同时执行,对应博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/89096633

2019-04-09

android转场动画示例

该源码展示了安卓开发中从一个页面跳转到第二个页面时的过渡动画:转场动画。所谓转场:第一个页面中的布局(例如图片)平滑的过渡到第二个页面(以动画的方式展示第一个页面中的图片)。参考博客:https://blog.csdn.net/gaoxiaoweiandy/article/details/89022940

2019-04-08

android Material揭露动画

展示如何改变水波纹颜色及按钮的水波纹揭露动画。csdn博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/89018248

2019-04-04

属性动画实例

android属性动画实例。博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/88851192

2019-04-03

属性动画(objectAnimator,valueAnimator,平移、缩放、旋转、透明度)

代码主要演示了属性动画,包括平移、缩放、旋转、透明度,同步执行多个动画,ObjectAnimator,ValueAnimator,估值器等。

2019-03-18

自定义behavior监听控件的滑动事件

自定义behavior监听滚动条的滑动事件 ,对应博客文章为:https://blog.csdn.net/gaoxiaoweiandy/article/details/88375509

2019-03-10

自定义behavior

该源码介绍了如何自定义behavior,可以实现观察者控件监听其它控件状态的变化,从而作出相应的处理。相关博客讲解地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/88089272

2019-03-03

appbar滑动视差效果

CSDN博文:https://blog.csdn.net/gaoxiaoweiandy/article/details/87907558

2019-02-24

滑动列表显示或隐藏Toolabr

滑动列表显示或隐藏Toolabr,博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/86598057

2019-01-31

NestedScrollView滑动显示或隐藏Toolbar

NestedScrollView滑动显示或隐藏Toolbar,相关CSDN博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/86598057

2019-01-31

3种垂直滑动页面让Toobar隐藏或显示动画

滑动ViewPager页面内容隐藏标题栏和回显标题栏,博客地址: https://blog.csdn.net/gaoxiaoweiandy/article/details/86598057

2019-01-30

监听列表滚动来隐藏或显示Toolbar与浮动按钮

监听列表滚动来隐藏或显示Toolbar与浮动按钮,博主账号:gaoxiaoweiandy

2018-12-20

cardview+浮动按钮+水波纹

博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/84772210 卡片,水波纹,浮动按钮

2018-12-03

tablayout标签+viewpager滑动关联

博客https://blog.csdn.net/gaoxiaoweiandy/article/details/84677127 主要讲解tablayout+viewpager实现滑动页面同时标题栏关联滑动。

2018-12-01

Toolbar随滚动透明效果

源码对应的博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/84349368

2018-11-23

SearchView+Toolbar使用

Toolbar上显示菜单项其中包括SearchView,SearchView各事件函数的处理以及结合ListView实现边输入边提示搜索关键字列表的功能。博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/83999117

2018-11-16

Toolbar基本用法

ToolBar的基本用法与菜单的添加,配合博客https://blog.csdn.net/gaoxiaoweiandy/article/details/83752594理解本示例源码。

2018-11-07

Android TextInputLayout用法

extInputLayout见名知义与文本输入有关系,TextInputLayout控件通过内嵌EditText来实现输入文本时,根据预先设定的属性向用户展示相应的提醒文字并附有酷炫的动画效果.博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/82957021

2018-10-07

android snackbar用法

Android系统从5.0开始引进了许多新的控件,它们给予了用户更好的体验,这些控件都遵循现在流行的Material Design设计原则。今天我们就来温故一下SnackBar控件,它是一种类似Android Toast(显示提示信息) 与 对话框的控件,经常用于给用户提示信息,比如“您还没有登录,请点击登录”. SnackBar是介于Toast与对话框之间的产物,为什么这么说呢?我们来对比一下这3个控件。博客地址:https://blog.csdn.net/gaoxiaoweiandy/article/details/82717202

2018-09-18

Andoid侧滑菜单

Android Material Design菜单控件NavigationView的用法

2018-09-01

仿QQ侧滑菜单

仿QQ侧滑菜单,如有疑问请结合本人CSDN博客讲解文章来阅读源码。

2018-08-08

RecyclerView2交换条目顺序与侧滑删除

RecyclerView上下拖动条目改变条目顺序;侧滑条目删除。

2018-08-08

RecyclerView下拉刷新上拉加载

RecyclerView下拉刷新、上拉加载源码,可结合我的博客分析其中的原理。

2018-07-14

RecyclerView拖动条目顺序+侧滑删除

拖动RecyclerView条目实现条目排序,以及侧滑条目删除条目。

2018-06-18

RecyclerView添加头尾部

RecyclerView本身没有添加头尾部的API,现在我们只能模仿Listview源码来为RecyclerView自定义这些缺失的API.

2018-05-27

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

TA关注的人

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