- 博客(36)
- 资源 (28)
- 收藏
- 关注
原创 Android立体旋转动画实现与封装(支持以X、Y、Z三个轴为轴心旋转)
本文主要介绍Android立体旋转动画,或者3D旋转,下图是我自己实现的一个界面 立体旋转分为以下三种: 1. 以X轴为轴心旋转 2. 以Y轴为轴心旋转 3. 以Z轴为轴心旋转--这种等价于android默认自带的旋转动画RotateAnimation 实现立体旋转核心步骤: 1. 继承系统Animation重写app
2016-08-07 20:42:36 2878 2
原创 Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)
Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景:1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动到底部或者顶部2. ScrollView滚动到顶部或者底部时主动触发一些操作(典型的就是滚动到底部触发自动加载操作) 两种方式:1. onSc
2016-08-07 20:38:17 2667 6
原创 Windows下Git多账号配置,同一电脑多个ssh-key的管理
本文以配置github.com账号和git.oschina.net账号来逐步演示在Windows环境下配置Git多账号支持即在同一个电脑上管理多个ssh-key,对git多一分了解。
2016-08-06 20:37:30 4699 3
原创 踩坑纪:Unable to load class ‘javax.xml.bind.JAXBException‘
AS 编译异常 Unable to load class ‘javax.xml.bind.JAXBException’.问题描述升级AS 4.2 之后,编译不通过,出现如下异常Unable to load class 'javax.xml.bind.JAXBException'.This is an unexpected error. Please file a bug containing the idea.log file.解决办法(mac上)修改JDK路径为的1.8版本,如果没有安装过,
2021-07-21 10:21:40 1106
原创 IOS小组件(9):让App支持多个小组件的实现方式
引言 本节作为小组件基础介绍的最后一个章节,前面都没有提到如何支持多个小组件,默认新建一个组件Target,就有大中小三个组件。如果你是为已经存在的App开发一个小组件功能,那么可能你不会需要那么多小组件。但是也有的App需要支持很多个小组件,也可能是无限个。 要实现支持多个小组件,需要使用到WidgetBundle,自定义一个WidgetBundle并改变小组件的初始化入口。默认小组件入口@mainstruct Widget1: Widget { // 小组件的唯一ID le
2021-06-11 11:07:03 832 4
原创 IOS小组件(8):App与Widget数据共享
文章目录引言数据共享方式App Groups 原理配置证书开启APP Groups在app中开启:在extension中开启App Groups特点共享数据核心代码参考结语引言 Widget是一个迷你版的App,IOS有沙盒机制,不同App之间无法直接共享数据。组件和主App之间其实就是不同App的关系,所以也无法通过userdefaults.standard来传数据,苹果为了在不打破沙盒的前提下能够传数据,就想出了App Group的方法。数据共享方式 可以通过网络和本地数据两种方式进行数据的共
2021-06-11 10:04:47 852 2
原创 IOS小组件(7):小组件点击交互
文章目录引言点击交互方式点击交互代码测试小号组件点击交互小号组件常用点击交互方式中号组件点击交互1中号组件点击交互2中号组件点击交互3结语引言 前面我们似乎掌握了实现一个小组件所需要的一切技能,默认情况下桌面点击小组件,也正常跳转到了App中。接下来我们一起来看看,小组件是怎么做到点击跳转到App的。点击交互方式点击Widget窗口唤起APP进行交互指定跳转支持两种方式:widgetURL:点击区域是Widget的所有区域,适合元素、逻辑简单的小部件Link:通过Link修饰,允许让界面上不
2021-06-07 14:23:12 1418
原创 IOS小组件(6):小组件实现时钟按秒刷新
文章目录引言计算时间差倒计时和计时器显示绝对日期或时间显示两个日期之间的时间间隔实现一天时间的计时器结语引言 上一节中我们了解了IOS小组件的刷新机制,发现根本没法实现按秒刷新,但是看别的App里面有做到,以为用了什么黑科技,原来是因为系统提供了一个额外的机制实现时间的动态更新,不用走小组件的刷新机制。Text控件支持显示日期时间,下面是来自官网的代码计算时间差let components = DateComponents(minute: 11, second: 14)let futureDa
2021-05-14 10:12:59 1694
原创 IOS小组件(5):小组件刷新机制
IOS Widget(5):小组件刷新机制引言系统如何管理小组件刷新Timeline刷新机制刷新策略建议时钟刷新策略(只有小时分钟,没有秒)主动请求重新刷新结语引言 前面的章节学完已经让我们可以顺利实现一个小组件了,但是小组件里面的数据如何刷新的呢,本节内容将讲解IOS的刷新机制。系统如何管理小组件刷新WidgetKit在一个单独的进程中渲染小组件视图即使小组件窗口显示在屏幕上,widget extension 也不会持续处于活动状态为了管理系统负载,WidgetKit使用预算来分配一天中的
2021-05-10 21:08:10 2531
原创 IOS小组件(4-2):创建可配置小组件(动态修改配置数据)
* 在项目中添加”Intents Extension“* 在 xxx.intentdefinition文件中增加一个动态类型* 实现 Intent Handler 提供动态配置数据
2021-05-07 22:30:34 397
原创 IOS小组件(4-1):创建可配置小组件(静态配置数据)
IOS Widget(4-1):创建可配置小组件(静态配置数据)引言添加动态配置可配置小组件框架代码解析修改 .intentdefinition 文件实现修改时间类型代码读取配置信息,实现动态布局结语引言 经过前面几篇文章阅读,已经掌握开发一款小组件的基本技能了,接下来开始掌握一些相对高级一点的技能。本文创建一个可配置小组件,通过修改时间类型,让Text空间显示不同格式的时间。添加动态配置方式1:新建组件的时候勾选 “Include Configuration Intent” 复选框。方式2:
2021-05-07 22:13:04 403
原创 IOS小组件(3):SwiftUI开发小组件布局入门
IOS Widget(3):SwiftUI开发小组件布局入门引言小组件布局怎么区分组件型号:大中小常用基础组件Text使用常用基础组件Image使用常用容器组件ZStack使用,类似安卓里面的FrameLayout,可以重叠布局常用容器组件HStack使用,水平方向布局常用容器组件VStack使用,垂直方向布局充满父布局怎么实现文字内部居中(multilineTextAlignment)等分剩余空间(Spacer)控制间距(spacing)结语引言 经过上一篇文章,我们已经可以在桌面上展示出一个小组件
2021-05-06 19:25:48 1100
原创 IOS小组件(2):小组件框架解析
IOS Widget(2):小组件框架解析引言创建小组件认识小组件框架各个组成部分小组件核心代码小组件核心代码注解如下:结语引言 看了小组件的概述,你肯定想马上搞一个小组件出来试试,实践中学习效果更佳创建小组件第一步:先创建好一个App,步骤省略第二步:在App中创建小组件1. 在Xcode中打开您的应用程序项目,然后选择 File > New > Target。2. 从“Application Extension”组中,选择“Widget Extension”,然后单击“Ne
2021-05-06 18:15:26 299
原创 IOS小组件(1):概述
IOS Widget(1):概述引言小组件是什么?小组件概述小组件开发备注小组件实现原理结语引言 本系列文章作者是安卓开发,以安卓开发的视角学习IOS小组件,记录一下踩坑记录,如有讲得不对的地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者的编号顺序阅读本系列文章。如果曾经了解过,只需要了解部分,则可以挑选来看。另外本系列文章中代码全部是Swift语言编写。小组件是什么?小组件概述WidgetKit 通过在 iOS 主屏幕或 macOS 通知中心放置小组件,让用户可以随时访问 A
2021-05-06 18:08:10 356
原创 开发App到上架应用市场需要经历什么?
开头的话这篇文章信息量有点多,如果你想开发一个自己的App,这个可以收藏当做指导手册这篇文章主要讲个人开发者开发App到上架应用市场整个过程你如果不想开发App,那么也可以阅读下看看开发App的艰难作为一个开发者,可能都想过自己做一个app,可是这年头条件苛刻:各大应用市场都逐渐不接受个人开发者上传app了,只能自己以公司的名义,这一步拦下了不少人有了公司之后,上架app,国内市场几乎都要软著了,软著这个要快你得花钱,明码标价有的有了软著还不够,还要你有icp认证(
2021-01-23 21:51:08 1397
原创 Android来电监听和去电监听
我觉得写文章就得写得有用一些的,必须要有自己的思想,关于来电去电监听将按照下面三个问题展开1、监听来电去电有什么用?2、怎么监听,来电去电监听方式一样吗?3、实战,有什么需要特别注意地方? 监听来电去电能干什么1、能够对监听到的电话做个标识,告诉用户这个电话是诈骗、推销、广告什么的2、能够针对那些特殊的电话进行自动挂断,避免打扰到用户 来电去电的监听方式(不
2016-08-08 10:32:01 1422 2
原创 Android 源码下载方法(Git 方式clone)
Android源码对于Android开发者来说,迟早有一天你会用到的,所以就记录一下,分享给读者,希望对读者有用这里需要使用到Git相关知识,不清楚的可以先阅读,了解的可以跳过Git-TortoiseGit完整配置: http://www.cnblogs.com/popfisher/p/5466174.html 下面通过四个步骤完成platform/frameworks/base
2016-08-08 10:31:56 655 1
原创 HandlerThread 创建一个异步的后台线程
使用HandlerThread几大优点:1、制作一个后台异步线程,需要的时候就可以丢一个任务给它,使用比较灵活;2、Android系统提供的,使用简单方便,内部自己封装了Looper+Handler机制;3、可以代替Thread + Looper + Handler的写法;4、可以避免项目中随处可见的 new Thread().start(),增加系统开销; 使用Handl
2016-08-08 10:31:49 506 1
原创 Android Toast cancel和show深入浅出实战
说到Android Toast,几乎都很熟悉吧,下面讲讲怎么实现下面几种场景:1、连续点击一个按钮,每次都产生一个新的Toast并且调用show方法 问题:触发了toast以后,toast内容会一直排着队的显示出来,不能很快的消失2、连续点击一个按钮,缓存一个Toast,每次都调用show方法 推荐:这种方式体验感觉最好,Toast消失的计时会从最后一次show之后才开始计算,
2016-08-08 10:31:47 2809 1
原创 PopupWindow 无法消失背后的真相(setBackgroundDrawable(Drawable background))
刚接手PopupWindow的时候,我们都可能觉得很简单,因为它确实很简单,不过运气不好的可能就会踩到一个坑:点击PopupWindow最外层布局以及点击返回键PopupWindow不会消失新手在遇到这个问题的时候可能会折腾半天,最后通过强大的网络找到一个解决方案,那就是跟PopupWindow设置一个背景popupWindow.setBackgroundDrawable(drawab
2016-08-08 10:31:42 3404
原创 Android PopupWindow怎么合理控制弹出位置(showAtLocation)
说到PopupWindow,应该都会有种熟悉的感觉,使用起来也很简单// 一个自定义的布局,作为显示的内容Context context = null; // 真实环境中要赋值int layoutId = 0; // 布局IDView contentView = LayoutInflater.from(context).inflate(layoutId, null)
2016-08-08 10:31:40 505
原创 Android Shape Drawable 静态使用和动态使用(圆角,渐变实现)
Android Shape使用场景:1. 圆角实现2. 实现有边框,有填充的背景3. 实现一个渐变的颜色一般情况上面三种情况我们会选择android的shape,下面分别介绍shape的静态使用和动态使用1. shape的静态使用在drawable中创建一个xml文件,在布局文件中直接引用这个xml文件即可xml version="1.0" encoding="ut
2016-08-08 10:31:37 3732
原创 Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤:1. 导入Sqlite jdbc本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD2. 编写jdbc连接代码public class OpSqliteDB { private static final String Class_Name = "or
2016-08-08 10:31:33 587
原创 Android监听系统短信数据库变化-提取短信内容
由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路。Android监听系统短信数据库内容变化使用场景:1、监听短信数据库的变化,添加删除修改,变化的时候会回调onChange方法2、提取刚刚变化的那条短信的内容备注:1、这种方式虽然一开始能够监听到数据变化,但是要判断是刚刚接手到的短信,还需要做一些处理,
2016-08-08 10:31:26 1070
原创 ListView:The content of the adapter has changed but ListView did not receive a notification终极解决方法
使用ListView时遇到如下的异常信息:10-26 18:30:45.085: E/AndroidRuntime(7323): java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the co
2016-08-08 10:31:19 590
原创 Activity onDestroy() 回调缓慢问题分析及完美解决方案
随意Acitivity的onDestroy的对所有的Android开发者都很熟悉,但是不一定都知道里面存在着一些坑,分享给大家,以后踩中的时候可以应急用Activity的时候,会发现如下问题: 有时候会发现Acitivity的onDestroy方法回调比较缓慢(可以达到好几秒钟之后才调用),即使之前使用finish方式关闭Activity也一样onDestroy回调慢带来什么问题呢? 有可能再...
2016-08-08 10:31:16 5783 2
原创 获取View的截图-将View转换为Bitmap对象
开发中,有时候需要获取View的截图来做动画来达到动画流程的目的原理:将View的内容画到一个Bitmap画布上,然后取出下面封装了一个从View生成Bitmap的工具类/** * 将View转换为Bitmap对象 */public class ViewToBitmapUtil { private static final String TAG = "Vi
2016-08-08 10:31:12 382
原创 Android正则表达式使用及性能隐患分析
场景:找出一个关键词在一条短信中出现的次数使用正则的实现方式:public static int findKeyWordCount(String srcText, String keyword) { int count = 0; Pattern p = Pattern.compile(keyword); Matcher m = p.matcher(srcT
2016-08-08 10:31:06 747
原创 Android Activity返回键控制的两种方式
Android Activity返回键监听的两种方式1、覆写Activity的OnBackPressed方法官方解释:Called when the activity has detected the user's press of the back key.The default implementation simply finishes the current act
2016-08-08 10:31:01 11623
原创 Android TextView 添加下划线的几种方式
总结起来大概有5种做法: 1. 将要处理的文字写到一个资源文件,如string.xml(使用html用法格式化) 2. 当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的android:autoLink属性设置为相应的的值,如果是所有的类型都出来就是android:autoLink="all",当然也可以在java代码里 做,textView01.setAut
2016-08-08 10:30:59 7023
原创 android gridview几个重要属性(android:listSelector自带内部padding分析)
一、android:scrollbarStyle 决定状态条的位置 常用属性outsideOverlay,滚动条在最外层,gridview设置的padding在滚动条的内侧 二、android:stretchMode 决定怎么分配剩余的空间 spacingWidth 除去griditem和gridview的左右padding,剩余的空间totalSpace
2016-08-08 10:30:56 1393
原创 ADB server didn't ACK
[2015-05-29 11:55:03 - adb] ADB server didn't ACK[2015-05-29 11:55:03 - adb] * failed to start daemon *[2015-05-29 11:55:03 - ddms] 'G:\android\android-sdk-forL\platform-tools\adb.exe,start-server
2016-08-08 10:30:54 384
原创 adb shell 查看系统属性(用来判断特殊的操作系统)
一般来讲,在android程序开发中进行需要判断设备类型和系统版本1、设备类型判断(android.os.Build.MODEL)比如判断属于Google Nexus 5,Nexus 7,MIUI v5, MIUI v6,三星设备,魅族设备等;这类型的问题都使用的android.os.Build.MODEL来判断,android.os.Build.MODEL是一个String变量,可以
2016-08-08 10:30:51 5381
原创 SharedPreferences 详解(多进程,存取数组解决方案)
一、SharedPreferences基本概念文件保存路径:/data/data//shared_prefs目录下目录下生成了一个SP.xml文件SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。 实现SharedPreferences存储的步骤如下:根据Context获取SharedPreferences对象
2016-08-08 10:30:49 1899
原创 FindBugs使用
FindBugs简介: FindBugs是一个开源的eclipse 代码检查工具,是一种白盒静态自动化测试工具; 它可以简单高效全面地帮助我们发现程序代码中存在的bug,bad smell,以及潜在隐患; 针对各种问题,它并且提供了简单的修改意见供我们重构时进行参考; 通过使用它,可以一定程度上降低我们code review的工作量,并且会提高review效率; 通过Fin
2016-08-08 10:30:46 1159
jdk-8u201-windows-x64.exe
2019-04-02
VC++设计和操作word 和Excel报表
2011-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人