- 博客(32)
- 收藏
- 关注
原创 对象拷贝工具类(深拷贝)
public class CloneUtil { private CloneUtil() { throw new AssertionError(); } public static <T extends Serializable> T clone(T object) throws IOException, Class...
2019-10-25 13:43:53
979
原创 自定义指定位置显示的弹窗
public class SmartPopupWindow extends PopupWindow { private int mWidth = ViewGroup.LayoutParams.WRAP_CONTENT; private int mHeight = ViewGroup.LayoutParams.WRAP_CONTENT; private float mAl...
2019-03-22 14:07:03
1067
原创 PermissionsTools
权限请求工具类public class PermissionsTools { public static PermissionsTools.Builder with(Activity activity) { return new Builder(activity); } public static class Builder { p...
2019-03-19 17:09:18
283
原创 检查网络连接状态和修改网络连接状态
/** * 检测网络是否连接 */private boolean checkNetworkState() { boolean flag = false; //得到网络连接信息 manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); //去进行判断网络是否连...
2018-10-25 17:31:37
2149
原创 Viewpager嵌套问题
重写外部viewpager的canScroll()方法/** * 当需要双层嵌套的viewpager时,需要重写外部viewpager的canScroll方法 */public class CustomViewPager extends ViewPager { public CustomViewPager(Context context) { s...
2018-08-02 13:54:44
265
转载 RxJava
前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJ...
2018-07-17 14:44:32
186
原创 全局log管理
1、书写全局log管理类public class PLog { public static boolean LOG_OPEN = false; public static void d(String tag, String message){ if(!LOG_OPEN) return; Log.d(tag,messa...
2018-07-13 15:07:56
328
原创 6.0动态加载权限用PermissionGen
android 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限首先给大家上 PermissionGen 库地址:https://github.com/lovedise/PermissionGen使用:1.引用库: 在 app gradle 中引入: compile 'com.lovedise:permissio...
2018-07-13 15:00:43
1360
原创 ToastUtil工具
public class ToastUtils { private ToastUtils() { } private static Toast mToast; public static void show(String msg) { if (mToast == null) { mToast = Toast.make...
2018-07-03 14:57:30
327
转载 视频播放器
Android播放器基础封装库PlayerBase简述视频播放是我们开发中比较常见的场景。这两年关于视频方面的热度不断提升,可以说前两年是直播年,今年是小视频年,各种短视频应用铺天盖地。对于视频的业务场景也越来越丰富,功能也越来越多。对于我们开发来说播放相关组件的代码变得也越来越复杂,管理维护成本也越来越高,面对不断迭代的业务,我们需要一种有效的方案来应对这种频繁的业务变化。这几年一直在做视频相关...
2018-06-28 10:28:42
2442
转载 SuperTextView
文章目录1、功能描述2、效果图3、如何使用3.2.1、布局中使用3.2.2、在代码中使用3.2.3、属性介绍3.1、 Android Studio导入方法3.2、 项目中如何使用4、 实现原理4.1、需求分析4.2、代码封装4.3、总结1、功能描述你还在为类似设置页面的样式(图+文字+图)每次写一大堆布局文件而烦恼吗?快来看看SuperTextView吧,这里有你想要实现的任何样式,而你要做的仅仅...
2018-06-26 09:49:43
206
转载 RxJava简介
前言我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 。而最近这几个月,我也发现国内越来越多的人开始提及 RxJava 。有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJav...
2018-06-25 14:59:03
297
转载 Retrofit2简介
本文注目录:Retrofit入门Retrofit注解详解Gson与ConverterRxJava与CallAdapter自定义Converter自定义CallAdapter其它说明前言本文中的Retrofit均指代Retrofit2.0。本文涉及到的代码以及测试使用的接口可在Github上找到。测试接口服务器在 server 项目下,直接运行 RESTServer.main() 即可启动测试服务器...
2018-06-25 14:36:43
297
原创 网络请求工具类
public class HttpManager { private static Retrofit retrofit; private static Retrofit retrofitQueryApk; private static Retrofit retrofitDownloadApk; private static HttpManager instance...
2018-06-25 14:31:50
245
原创 Timer和Handler启动轮询
0、Timer定时器介绍Timer定时器主要做定时任务或者按照一定的时间间隔做任务,例如每天4点钟定时执行作业等Timer的特性1、它属于单线程的,每创建个Timer实例,就会创建一个新线程2、Timer默认情况下不是守护线程,可以设置为守护线程new Timer(true),守护线程再进程中没有其他线程时,守护线程将销毁3、TimerTask是以队列的方式一个个的执行4、TimerTask中的c...
2018-06-22 14:32:04
1274
原创 获取当前版本apk的版本号和版本名字
public class APKVersionCodeUtils { /** * 获取当前本地apk的版本 * * @param mContext * @return */ public static int getVersionCode(Context mContext) { int versionCode = 0...
2018-06-22 09:28:28
2305
原创 Intent讲解
我们总结了几个Android中重要组件,相信大家对于这些组件已经有了清晰的认识,我们就来看一下几个常见的操作:启动一个Activity:Context.startActivity(Intent intent);启动一个Service:Context.startService(Intent service);绑定一个Service:Context.bindService(Intent service...
2018-06-21 16:06:48
218
原创 App启动检查更新下载安装apk
现在很多的App中都会有一个检查版本的功能。例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求。一般的处理方式是:服务器返回的App版本与当前手机安装的版本号进行对比。(1)如果服务器所返回的版本号大于当前App版本号那么此时手机所安装的App不是最新版。可以提示用户升级。(2)如果不大于当前版本号,可以提示用户为最新版本:...
2018-06-21 16:03:15
2663
转载 byte[]与十六进制字符串的转换
/** * byte[]与16进制字符串相互转换 * */public class BytesHexStrTranslate { private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e...
2018-06-21 13:46:47
5680
转载 Android开发中的Intent.Action
本文介绍Android中Intent的各种常见作用。1 Intent.ACTION_MAINString: android.intent.action.MAIN标识Activity为一个程序的开始。比较常用。Input:nothingOutput:nothing <activity android:name=".Main" android:label="@string/app_name"&g...
2018-06-21 09:27:45
263
原创 实时数据的折线图
Android图表控件MPAndroidChart——曲线图LineChart(多条曲线)动态添加数据发现最新的MPAndroidChart和以前版本的使用有一些差距,就写下了现在新版的使用方法 相关文章:Android图表控件MPAndroidChart的简单介绍(MPAndroidChart3.0)Android图表控件MPAndroidChart——曲线图LineChar...
2018-06-20 17:05:47
3057
原创 Gson解析中的Typetoken获取数据类型
情景引入: 在使用GSON解析一段JSON数组时,需要借助TypeToken将期望解析成的数据类型传入到fromJson()方法中,如下:List<Person> people = gson.fromJson(jsonData, new TypeToken<List<Person>>(){}.getType());1 ...
2018-06-20 16:52:32
5388
原创 日期util
public class DateTimeUtil { static SimpleDateFormat format; /** * 日期格式:yyyy-MM-dd HH:mm:ss **/ public static final String DF_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; /...
2018-06-20 16:23:24
208
转载 listview添加头部
一、 概述:在代码中使用 listView.addHeaderView(…) 方法可以在ListView组件上方添加上其他组件,并且连结在一起像是一个新组件。如果多次使用 .addHeaderView(…) ,则最先添加的组件在最上方,按添加的先后顺序由上到下罗列。 此时listView 的 position = 0 的位置对应的是view1,而不再是原来listView中的第一条了。如下图所示:...
2018-06-19 17:43:32
1808
转载 listview的多布局实现
实现代码Adapter的代码其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局TYPE_1...是三种类型.在使用不同布局的时候,getItemViewType和getViewTypeCount不能少,一般的同一种item的列表是不用这两个函数的重载的,但是如果需要不同种类的item,就必须重载这两个classRunRankAdapter...
2018-06-19 17:42:02
2039
原创 本地文件操作类
public class LocaHostUtils { //获取当前的时间 public static String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()); //这个路径是 当前路径/OPE/ public sta...
2018-06-15 12:37:47
185
原创 SFTP工具
public class SFTPUtils { private String TAG = "SFTPUtils"; private String host; private String username; private String password; private int port = 22; private ChannelSftp sf...
2018-06-15 12:36:34
2044
原创 截取字符串(去掉前n个字符)
public static String truncateHeadString(String origin, int count) { if (origin == null || origin.length() < count) { return null; } char[] arr = origin.toCharArray(); ch...
2018-06-15 12:20:30
20925
1
原创 RecyclerView多布局的简单实现
一、在做项目时,我们经常会遇到如下面的 在一个窗口中,不同行的布局不同,有的是一行一个条目,有的是一行两个条目,还有四个的,还有更多,这里是数量不同,还有的是不同行里条目数量相同而布局不同,都可以用recyclerview的多布局来实现,下面就简单实现布局和数量都不同的recycle人view的多布局实例1、使用recyclerview要到包在gra...
2016-11-12 19:16:23
5888
1
原创 Listview 头部悬停效果的实现
在android App中最常用的控件之一Listview基本上每个app都用的上,其使用频率高,所以就有更多的人想用它来实现更多的效果,比如listview的多布局,listview的添加头部,底部和头部悬停等效果都是最基础的!下面就用最简洁的语言来讲述一下listview的头部悬停效果的使用:整个主要布局就是一个ListView,如果listview的上面有内容且高度比较高,可...
2016-11-03 22:07:02
2389
1
原创 NavigationView
导航菜单的制作方式多种多样,网上也有各种炫酷效果的具体实现方式,那么今天我主要是想来说说Google在2015年io大会推出的NavigationView的具体使用方式。
2016-11-03 20:06:54
317
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人