- 博客(19)
- 资源 (3)
- 收藏
- 关注
原创 自定义View之模仿AppleWatch手表
转载请注明地址:最近想自定义View写个手表,然后在网上看到AppleWatch的一个手表界面很简洁漂亮,那就用自定义View来模仿实现它吧。文章目录一、自定义属性二、构造方法三、解析自定义属性四、初始化画笔五、测量大小六、获取最终的尺寸七、绘制八、绘制表盘九、绘制刻度十、绘制外圈数字十一、绘制内圈数字十二、绘制指针十三、绘制时针十四、绘制分针十五、绘制秒针十六、源码地址先来看看我们要实...
2019-08-13 01:21:21 1170 1
原创 关于Apktool编译和回编译问题的研究与修复
为了防止安卓App被Apktool反编译和回编译,有一种比较有效的手段就是针对Apktool的漏洞进行防护,使Apktool在反编译或回编译的过程中发生异常而导致失败。所以要想绕过此类防护手段,就得修复Apktool的相关漏洞,好在Apktool是开源的,于是我们就可以通过研究Apktool的源代码来进行修复。下面是关于目前所遇到的一些问题的说明与修复。注意:本文的目的在于逆向分析技术的学习与研究,切勿用于非法目的
2019-07-14 23:51:33 5063 7
原创 SwipeRefreshPlusLayout
SwipeRefreshPlusLayout DescriptionExpand the function of loading more to android.support.v4.widget.SwipeRefreshLayout. Usage1. Add a dependency to your build.gradle:dependencies { compile 'me.l
2016-08-01 18:13:55 454
原创 FloatingActionButtonMenu
FloatingActionButtonMenu 描述使用 Google support library 实现FloatingActionButtonMenu。 GitHub地址:https://github.com/lynnchurch/FloatingActionButtonMenu使用1. 在 build.gradle中增加依赖:dependencies { compile '
2016-07-15 14:10:42 1531 1
原创 关于陌陌签名验证机制的研究
一、验证机制当前APP防止二次打包反盗版的通常做法就是进行签名验证,获取APP的签名进行一定的算法加密然后发送到服务器,服务器拿到签名与合法的签名进行比对,如果是一致的则认为是正版,否则就是盗版。 获取签名是通过反射PackageParser进行的,代码如下: public static String getApkSignature(Context context, String apkPath
2015-09-30 13:13:23 4128 1
原创 Android各种View的下拉刷新与加载更多
1.基本介绍一个可下拉刷新与上拉加载更多的框架,可对ListView、GridView、WebView、ScrollView等几乎所有常用的View类型进行此操作,并且还提供了GIF动画的上拉与下拉头,也可自定义上拉头与下拉头。(本框架基于https://github.com/jingchenUSTC/PullToRefreshAndLoad ,特此感谢) 项目地址:https://github.
2015-09-01 00:15:54 715
原创 一个仿IOS风格的AlertDialog
实现思路继承Dialog,采用建造者模式,内部维持一个建造者Builder静态类来对对话框的标题,内容,积极按钮,消极按钮等部分进行设置,设置完成后使用create()方法来完成AlertDialog对象的创建,最终使用show()方法将对话框显示出来。效果图下面是一个仿ios风格的对话框效果图: 使用用法如下所示:AlertDialog.Builder builder = new AlertDi
2015-07-19 18:21:26 1591
原创 Android横向滑动选项卡
1.效果图: 2.项目地址:https://github.com/lynnchurch/HorizontalScrollMenu.git 3.使用示例代码:package com.example.horizontalscrollmenusample;import java.util.ArrayList;import java.util.Arrays;import java.util.List
2015-06-28 00:40:46 4809
原创 viewpager禁止滑动
1.继承ViewPager 2.定义一个变量mIsScroll用来进行滑动控制 3.重写onInterceptTouchEvent()方法如下:@Override public boolean onInterceptTouchEvent(MotionEvent event) { if (mIsScroll) { return
2015-06-01 18:58:38 511
原创 openfire登录出现“SASLError using DIGEST-MD5: not-authorized”异常的解决
当我们用org.jivesoftware.smack.XMPPConnection.login()登录
2014-08-17 19:45:43 9991 15
原创 openfire中用email作用户名注册的解决方案
用email作用户名的好处:当用户忘记密码时,可以通过邮箱进行密码修改。 步骤一:用户输入邮箱地址,客户端进行邮箱格式验证,并把邮箱发往服务器验证是否已注册。通过查找smack的API文档,我没有发现有专门的方法用于用户名唯一性的验证,倒是在注册的时候,如果用户名已存在,服务器会返回一个“conflict”的异常,通过这个异常可以判断用户名的唯一性。但向服务器提交注册请求得进行到第
2014-08-16 13:29:20 2593
原创 关于java中堆、栈、方法区等概念的分析
昨晚在一个群看到一群人为Java堆栈的概念争论得不可开交,直到都散去时也没个统一的结论。为此我专门去网上查阅了相关文档,以求把这个问题彻底弄清楚。 其中有篇文章我认为表述的比较详细形象,但是关于堆栈所存储的数据类型的表述,我认为太笼统了,没有进行具体分情况表述,现摘抄概念部分的表述如下: 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存
2014-08-08 16:50:19 534
原创 java正则表达式实战之密码策略
最近在用java开发一个注册模块,里面的密码策略涉及到了正则表达式,于是我就按照QQ帐号注册的密码策略用正则表达式去实现字符的过滤,QQ帐号注册的密码策略如下图:密码策略涉及到了三个要求,我们就用正则表达式一个一个地来实现,最终用代码进行逻辑与运算就可以了。 长度为6-16个字符:.{6,16}不能包含空格:\\S*不能是9位以下纯数字:(.*\\D.*){1,8}|.{9
2014-08-08 01:23:33 3413
原创 Openfire插件开发流程
一、安装Antl 配置java环境变量l 配置ant环境变量找到ant所在目录二、创建一个项目,结构如下所示:要点:1.实现Plugin接口; 2.源码根包名为org.jivesoftware.openfire.plugin; 3.将jasper-compiler.jar、jasper-runtime.jar、openfire.j
2014-08-05 18:33:44 593
转载 GitHub 优秀的 Android 开源项目
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、ProgressBar及其他如Dialog、Toast、EditT
2014-09-29 23:54:30 1349
转载 Jabber 协议 概述
1. 介绍 Jabber是一个由开源社区发起并领导开发的即时消息和在线状态的系统。Jabber系统和其它即时消息(IM)服务的一个功能上的差别在于Jabber拥有开放的XML协议。在保持Jabber1.0版本有关消息核心以及在线状态的协议的基础上,增加了一些必要的扩展。本文档将对Jabber服务器1.4版的Jabber协议进行介绍。 在XML上下文的数据流中,Jabbe
2014-08-29 23:26:05 872
转载 解析XMPP协议分析与施用
解析XMPP协议分析与应用http://www.dzsc.com/data/html/2011-8-31/96203.html XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。因此,基于XMPP的应用具有超强的可扩展性。经过扩展以后的XMPP可以通过发送扩展的信息来处理用户的需求,以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用
2014-08-17 22:00:00 2224
转载 Servlet初始化:随服务器启动而运行
有时候,我们需要仅仅是在服务启动,而非其他更为复杂的定时任务的时候,做些初始化的工作,比如将一些数据导入到内存中等等,用Servlet的初始化可以很好的做到这一点。而初始化工作是通过Servlet中的init()方法来做的。 建一个Servlet类:AutoRunServlet.java,代码如下: public class AutoRunServlet extends Htt
2014-08-04 22:18:13 2612
XposedInstaller_3.1.5.apk
2019-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人