自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jeffray1991的博客

把最好的给这个世界

  • 博客(25)
  • 收藏
  • 关注

原创 ExoPlayer 2.18.2 基本使用(三)

如何用exoplayer实现m3u8视频文件的播放?一篇文章帮你搞定!

2023-02-10 17:11:44 726

原创 ExoPlayer 2.18.2 基本使用(二)

完成了Exoplayer自带缓存的使用,下次再次播放相同视频的时候,即使是没有网络,也能轻松加载播放。

2023-01-08 19:00:00 628

原创 ExoPlayer 2.18.2 基本使用(一)

ExoPlayer 2.18.2 基本使用

2023-01-03 14:32:29 1286 4

原创 记一次 ImageSpan 在 API 29 以下的居中问题

描述不多解释,看下图:分析既然在 API 29 上能使用ImageSpan.ALIGN_CENTER,那我们去看看源码的实现,将必要代码拉出来,自己写一个ImageSpanUnderQ 类在 29以下使用不就完事了?源码分析:红色框框部分使我们的重点代码,简单流程就是首先拿到当前的Drawable ,其次计算 Canvas 的平移距离并平移,目的是居中绘制当前图片,最后 b.draw(canvas) 绘制上去。处理源码如下:class ImageSpanUnd...

2021-06-04 15:59:10 220

原创 记一次JNI编译出错的BUG

先上图,问题如下:这个问题一般是由什么原因导致的?很大可能是SDK目录全路径存在空格,例如我的SDK全路径就是:D:\Program Files\Android\sdk处理方式:移动sdk目录,路径不能有空格,我现在的目录是:D:\sdkGuys,Peace & Love...

2021-05-06 13:48:11 154

原创 ViewPager与ViewPager2实现堆叠效果

先上图看效果,GIF稍微有点糊,凑合着看!上面是ViewPager2实现的,下面是ViewPager实现的~出发点最近公司想要实现这样一种效果,实现并不难,本着尝试新技术的想法,打算用ViewPager2实现这种效果。中间也或多或少遇见了小麻烦,发出来与大家一起讨论下~需求实现方式一、ViewPager实现:代码如下: viewpager.offscreenPageLimit = 2 val mScaleOffset = 200f

2021-04-27 12:03:22 2037 8

原创 记一次Android智齿SDK导致BUG

Could not determine the dependencies of task ':app:preOnlineDebugBuild'.> Could not resolve all task dependencies for configuration ':app:onlineDebugRuntimeClasspath'. > Could not find :unspecified:. Searched in the following locations: .

2021-04-25 17:52:06 540

原创 Android可拖拽移动控件,不会回到初始位置

发现问题:最近项目里有拖拽控件的需求,但是发现移动后还是会回到原点,这是由于父控件的刷新导致的。解决问题:package com.example.dragview;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import an...

2019-05-13 15:12:59 1933

原创 Android 基于Message的进程间通信

实例在最后,先简析原理。1、服务端重要代码解析@Nullable@Overridepublic IBinder onBind(Intent intent) { return mMessenger.getBinder();}getBinder里面是这样的public IBinder getBinder() { return mTarget.asBinder(...

2019-01-28 18:44:54 234

原创 轻松自定义拖拽控件 —— ViewDragHelper的学习笔记

简介ViewDragHelper是什么?顾名思义,就是拖拽控件的一个帮助类。通过这个帮助类,我们可以轻松实现一些拖动效果。基本使用public class MyLinearLayout extends LinearLayout { private ViewDragHelper dragHelper; public MyLinearLayout(Context c...

2018-11-29 17:27:22 602

原创 ondraw() 和 dispatchdraw() 的区别

绘制VIew本身的内容,通过调用View.onDraw(canvas)函数实现绘制自己的孩子通过dispatchDraw(canvas)实现View组件的绘制会调用draw(Canvas canvas)方法,draw过程中主要是先画Drawable背景,对 drawable调用setBounds()然后是draw(Canvas c)方法。有点注意的是背景drawable的实际大小会影响vi...

2018-11-20 16:18:05 366

原创 HashMap原理以及面试问题

什么时候开始有HashMap的?从JDK1.2开始才有HashMap什么是hash冲突static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}1、HashMap中主要是通过key的hashCo...

2018-10-15 09:44:30 542 1

原创 java.lang.Object笔记

目录方法总结clone()equals(Object obj)finalize()getClass()hashCode()notify()notifyAll()toString()wait()wait(long timeout)wait(long timeout, int nanos)对监视器和锁的通俗解释 方法总结clone()、e...

2018-09-26 14:09:10 148

原创 Handler知识点总结

Handler必须在主线程中实例化吗?不是必须的。如果你不带参数的实例化:Handler handler = new Handler();那么这个会默认用当前线程的Looper。1、如果你要刷新UI。要么在主线程下Handler handler = new Handler();要么在非主线程下Handler handler = new Handler(Looper.getM...

2018-09-26 11:07:19 173

原创 IntentService(转)

原文在这里IntentService,可以看做是Service和HandlerThread的结合体,在完成了使命之后会自动停止,适合需要在工作线程处理UI无关任务的场景。IntentService 是继承自 Service 并处理异步请求的一个类,在 IntentService 内有一个工作线程来处理耗时操作。 当任务执行完后,IntentService 会自动停止,不需要我们去手动...

2018-09-19 17:37:17 136

原创 关于HandlerThread

解释HandlerThread用于处理需要耗时的操作。比如,我现在有一个按钮,我点击一下,发送一个指令给子线程的handler,子线程的handler接收到指令后,执行下载图片的耗时操作。此时,用HandlerThread就比较合适。上代码代码源于网络 ...

2018-09-19 17:06:21 137

原创 关于Handler的post方法和send方法的区别解释

先看源码 /** * Causes the Runnable r to be added to the message queue. * The runnable will be run on the thread to which this handler is * attached. * * @param r The Run...

2018-09-19 16:34:49 857

转载 数据库索引相关知识(转)

                                 &n

2018-09-18 18:29:43 150

原创 SpringMVC学习笔记

SpringMVC执行流程架构流程  用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet DispatcherServlet通过HandlerA...

2018-09-17 23:10:45 119

原创 关于mybatis generator只有insert方法的解释和处理方法

解释如果配置文件里面没有做什么enableSelectByPrimaryKey="false",enableUpdateByPrimaryKey="false",enableDeleteByPrimaryKey="false"等奇葩配置,一般情况下是因为mysql-connector-java这个jar包使用了6.x以上的版本处理办法简单,如果是做了奇葩配置,那就去掉你的奇葩配置...

2018-09-16 22:53:56 2106 3

原创 MVP设计模式

创建IPresenter接口,把所有业务逻辑的接口都放在这里,并创建它的实现PresenterCompl(在这里可以方便地查看业务功能,由于接口可以有多种实现所以也方便写单元测试) 创建IView接口,把所有视图逻辑的接口都放在这里,其实现类是当前的Activity/Fragment Activity里包含了一个IPresenter,而PresenterCompl里又包含了...

2018-09-04 07:50:52 218

原创 MVC设计模式

View层就是布局文件,通过用户的操作来通知Controller Controller层就是Activity,负责通知Model层处理数据 Model用于提供数据,当View层需要的数据处理好以后,通过回调接口通知View层刷新数据优点:...缺点:Activity即作为Controller层,也作为View层,显然没有解耦,不友好...

2018-09-04 07:30:32 148

原创 Spring5约束大全

<?xml version="1.0" encoding="utf-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="h

2018-07-16 16:26:17 1713

原创 struts2拦截器的注解配置

1、先配置struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0...

2018-07-13 09:52:07 192

原创 listview自带的单选和多选

1、ListView本身带有单选和多选功能,也就是说在单选模式下,它能够记住当前选中的唯一的列表项;在多选模式下,它能够记住目前选取的所有的列表项。2、这种选择模式共有4种CHOICE_MODE_NONE,CHOICE_MODE_SINGLE,CHOICE_MODE_MULTIPLE,CHOICE_MODE_MULTIPLE_MODAL。3、CHOICE_MODE_NONE,这是ListV

2016-09-28 12:48:24 1126

空空如也

空空如也

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

TA关注的人

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