自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 动画——属性动画(Property Animation)

概述:属性动画是android3.0以后提供的一种动画实现机制,它可以作用于任何对象,对对象的属性赋值 修改,从而实现动画效果。 实现原理:在一定的时间内,通过插值器(动画改变的趋势)与估值器(动画具体变化的数值),不断改 变对象的属性,实现动画的效果。

2017-11-16 11:03:21 398

原创 动画——帧动画(Drawable Animation)

动画——帧动画(Drawable Animation)概述: 帧动画就是在一段时间内执行多少帧,每一帧都是Drawable下的一个 资源文件。也就是说一段时间内播放多少个drawable,其本质就是 drawable。这种动画往往会使用大量的图片,不但适配复杂,而且 会增加安装包的体积,更有甚者出现内存溢出的情况。非绝境,不 建议使用!使用:第一步:定义帧动画 在drawable目录

2017-11-16 10:54:19 640

原创 动画——视图动画(View Animation)

动画——View Animation简介:视图动画又称补间动画,是android中比较古老的一种动画,补间动画执行完以后 并没有改变View的真是位置属性。AlphaAnimation:透明度动画 xml属性 Java方法 解释 android:fromAlpha AlphaAnimation(float) 开始的透明度 android:toAlpha Alpha

2017-11-15 17:51:44 766

转载 android框架——MVVM

MVVM

2017-11-09 16:33:31 372

原创 对象结构型模式——装饰者模式(decorator)

定义: 动态的给对象添加一些额外的职责。就增加功能来说,装饰者模式提供了比继承更加有弹性的另一种方案。概述: 装饰者模式可以透明的给对象增加功能,并实现功能的组合。被装饰的对象可以已经被装饰过多次,在Java中I/O是装饰者模式的典型代表之一。实例(Kotlin语言) 被装饰者的抽象类:饮料类abstract class Beverage { //给一个默认的饮料名 op

2017-10-27 10:42:43 256

原创 对象结构型模式——外观模式(Pacade Pattern)

定义: 提供一个用来访问子系统一群接口的接口,该接口让子系统更容易使用。概述: 外观模式的目的不是定义一个具有新功能的接口,而是提供一个接口让客户端减少与子系统多个模块的交互,松散耦合,让子系统更加容易使用,但是你也可以不用该接口而直接访问子系统。实例(Kotlin语言) 模块A的接口以及实现//接口interface AModuleApi { fun testA()}//

2017-10-26 15:06:02 364

原创 对象结构型模式——适配器模式(adapter)

定义: 将一个类的接口转换成客户希望的另一个类的接口,适配器模式使原本不兼容的类可以在一起工作。概述: 主要功能是匹配转换,目的是复用已有的功能。适配器类里面也可以有自己的实现,并且适配器类是用对象的组合的方式来调用适配者中的实现。实例(Kotlin语言) 以下是Duck接口(对应标准模式中的Target接口)interface Duck { fun quack() fu

2017-10-26 11:25:06 401

原创 对象行为型模式——命令模式(Command)

定义: 将请求封装为对象概述 命令模式的关键就是把请求封装为命令对象,制定统一的执行操作接口,所有的操作包括存储、转发、记录等都围绕这个对象进行。标准的命令模式会有以下几个类: Command:命令的接口类,声明执行的方法 ConcreteCommand:具体的命令类,实现了Command,并持有接收者Receiver,调用接收者的相关方法来完成命令功能 Receiver:真正执行命令的

2017-10-25 15:24:36 333

原创 对象结构型模式——组合模式(Composite Pattern)

定义 组合模式将对象组合成整体-部分的层次结构,使得整体和部分的处理具有一致性。概述 组合模式使用一个抽象类,使得叶节点和枝节点能够统一起来,用户可以不再区分就可以对枝和叶做统一处理。 component(抽象组件):为组合的对象声明接口,使用户可以统一的访问和管理组合对象,这里可以实现缺省功能。 leaf(叶节点):定义和实现叶节点的功能 composite(枝节点):定义和实现枝节点

2017-10-24 18:18:34 284

原创 对象行为型模式——迭代器模式(Iterator)

定义: 顺序访问聚合对象中的各个元素,又不暴露对象中的表示概述实例(java语言) 迭代接口public interface Iterator { /** * First.移动到第一个对象位置 */ void first(); /** * Next.移动到下一个位置 */ void next(); /**

2017-10-23 16:46:59 243

原创 类行为型模式——模板方法(TemplateMethod)

定义: 模板方法模式定义了一个算法的步骤,并允许子类为一个或者多个步骤提供实现。概述 本模式包含一个抽象类及多个实现类,一下分别介绍 抽象类AbstractClass 此类定义了算法的骨架,并确定了其执行顺序,一般是不允许改变的,其抽象方法需要子类去实现 具体类(ConcreteClass) 实现了抽象类的具体类,实现了算法骨架的某些方法。 不得不说的是其钩子操作,可以实现改变类行为

2017-10-20 18:32:11 306

原创 对象行为型模式——观察者模式(Observer Pattern)

定义: 观察者模式定义了对象之间的一对多的依赖关系,当一个主题(Subject)对象的状态发生改变时,他的依赖者(Observer)都会收到通知。概述 此模式有四个比较重要的类,下面一一说明 主题类(Subject) 可以是抽象类也可以是接口,具体的主题要实现该类 具体主题类(WeatherData) 实现Subject的类 观察者接口类(Observer) 用于通知每个观察者更新

2017-10-20 15:50:34 306

原创 对象行为型模式——状态模式(StatePattern)

定义: 允许一个对象在其内部状态改变时改变其行为概述 状态模式和策略模式很相似,要注意区分其区别,也有三个(至少三个)比较重要的类 状态类接口(State) 状态模式首先定义一个状态类接口(State),声明其所有的动作 具体状态类(SoldState、SoldOutState、NoQuarterState、HasQuarterState) 每一种状态类都实现State,每种状态对应实

2017-10-19 16:35:18 315

原创 对象行为型模式——策略模式(Strategy Pattern)

定义: 策略模式定义了算法族 ,分别封装起来,让它们之间可以相互替换。此模式让算法的变化独立于使用算法的客户。概述 此模式又称政策模式(Policy pattern),有三个比较重要的类 抽象策略类(FlyBehavior/QuackBehavior) 抽象策略类可以有一个,也可以有多个,其声明了算法的方法,需要不同的具体算法实现它,它可以是抽象类也可以是接口 具体策略类(FlyNoWa

2017-10-18 17:09:41 362

原创 UI组件——SwipeRefreshLayout学习笔记

mStrokeInset: 表示让RectF向上下、左右的增加或减少量,arcBounds.inset(mStrokeInset, mStrokeInset);,mStrokeInset>0是减小,mStrokeInsetif (mRingCenterRadius 0 || minEdge 0) { /*Math.ceil测试:表示大于或等于参数的最小值 var aa = Mat

2017-09-20 15:25:57 186

原创 UI组件——SwipeRefreshLayout源码解析——MaterialProgressDrawable的绘制

MaterialProgressDrawable的绘制 MaterialProgressDrawable是一个自定义的Drawable,需要重写一下一个方法:draw:绘制图形setAlpha:设置透明度setColorFilter:设置填充色getOpacity:获取不透明度getIntrinsicWidth、getIntrinsicHeight:获取Drawable的宽高我们直接看最重

2017-09-20 10:35:58 399

原创 UI组件——SwipeRefrshLayout最详细的源码解析——UI绘制

Ui绘制概述 SwipeRefreshLayout的绘制基本上分为三步,第一步是自定义一个CircleImageView,这个CircleImageView加入了5.0的新特效,既有个阴影的效果,不知道平常大家注意到没,第二步是自定义了一个MaterialProgressDrawable作为ImageView的 Drawable,既通过imageView.setImageDrawable(Draw

2017-09-19 16:28:24 540

原创 UI组件——WebView使用总结

重点1:loadUrl及loadDataWithBaseURL的使用 这部分内容已经在 UI组件——WebView部分api释义 讲过了,还不懂得可以去看一下重点2:h5页面在Android WebView中的适配问题 笔者踩过的坑是h5页面未对移动端做任何适配,而且在h5页面指定了,导致Android端适配很差,我们Android端在这里自己搞各种适配的工作,结果还是不理想,其实这个问题理想解

2017-09-07 16:18:55 841

原创 UI组件——WebSettings部分api解释

setSupportZoon 支持放缩功能,一般和setBuiltInZoomControls一起使用setMediaPlaybackRequiresUserGesture 是否通过手势触发播放媒体setBuiltInZoomControls 是否使用内部放缩机制,包含悬浮的放缩控件,可以通过setDisplayZoomControls(false)设置不显示悬浮放缩控件setDisplayZ

2017-09-07 11:04:06 426

原创 UI组件——WebChromeClient部分api解释

onProgressChanged 网页加载进度发生改变onReceivedTitle 接收到的网站标题onReceivedIcon 接收到的网站logoonShowCustomView 进入全屏模式onHideCustomView 退出全屏模式

2017-09-07 10:32:33 165

原创 UI组件——WebViewClient部分api解释

shouldOverrideUrlLoading post不调用此方法,当webview.loadUrl(url),url为非HTTP url 时,返回trueonPageStarted 开始加载,每个主frame只调用一次onPageFinished 页面加载完成,此时图片可能没有加载onLoadResource 加载资源onPageCommitVisible 通知应用程序不在绘制来自上

2017-09-07 10:24:54 338

原创 UI组件——WebView部分api释义

destroy() 销毁当前WebView,WebView有潜在的内存泄漏问题,当不需要的时候,最好销毁掉,避免内存泄漏 @Override protected void onDestroy() { super.onDestroy(); if (mMyWebView!=null) { ViewGroup rootView = (Vi

2017-08-28 18:08:32 474

原创 Class类探索(一)

感觉阔别scdn已经很久了,一个是项目比较忙,一个是许多想写的东西不敢轻易下笔写,最近又看了一些书,就更没有时间了,前天动手画了个表,贴贴代码,尚未完成,后续更新。/** * Created by Administrator * draw a clock */public class MyClock extends View { private Paint paintCircle;

2017-06-29 20:59:25 196

原创 与系统的礼尚往来

和系统之间的往来,可以通过 android.provider包下相关类进行查询 1:需要跳转到Android 系统的设置页面 可以在Settings类中查询到ACTION_SETTINGS字段,然后通过startActivity(new Intent(Settings.ACTION_SETTINGS));设置跳转 2:打开系统相册 Intent intent = new Intent(I...

2017-06-12 14:40:33 241

原创 AS的一些设置

由于一个代码提示问题,原本想new Scroller(),但是AS无论如何不给提示,经过code completion的各种设置,依然不能解决,索性把AS卸载了,但是悲催的是忘记了export settings ,导致各种原有的设置都消失了,但是吧,突然之间也不知道需要设置写什么东西,为了防止以后忘记,现在就做好记录吧。 Ctrl + Alt + S 打开设置面板,如果打不开,可能是AS快捷键和搜

2017-06-11 22:51:20 353

原创 APK动态加载框架解析(一)

既然项目中刚好用到了动态加载框架DL,我就索性研究了一下DL的实现,现在已有小成,否则也不敢出来写博客,那么今天我们就看一下DL最简单的实现,直接上代码,代码中有足够清楚的解释,这段代码只能做到启动Plugin,暂时还不能获取plugin中的各种资源 先看一下宿主程序的Manifest配置 权限: <uses-permission android:name="android.permission

2017-05-10 18:07:08 340

原创 Class类探索(一)

Class类是干嘛的 Class类封装了对象和接口运行时的状态,JVM依靠Class类来正确运行,Class类在类装载时就是内存中创建了Class类对象,八种基本数据类型(boolean,byte,char,short,int ,long ,float,double)和void 关键字都对应着一个Class类对象(包装类:Boolean,Byte,Character,Short,Integet,

2017-05-04 21:20:47 247

原创 探索Java类的加载机制与初始化

加载生命周期 类从加载进入JVM内存到卸载出内存它经历的完整的生命周期是:加载、验证、准备、解析、初始化、使用、卸载。 加载过程 类的加载过程包括:加载、验证、准备、解析、初始化共五个阶段。加载过程需要注意的是: 1、解析的发生顺序是不确定的,因为Java支持动态绑定,解析也可能发生在初始化开始之后进行。 补充:Java的绑定分为静态和动态:静态绑定为Java编译期绑定,在Java中只有s

2017-04-28 17:36:45 336

原创 Enable VT-x in your BIOS security settings (refer to documentation for your computer)

最近公司换了一批电脑,在我配置好Android开发环境准备跑一下项目的时候,启动AS虚拟器的时候出现了这样的提示,我也是一头雾水啊,大概知道是要开启BIOS中的VT-x技术,经过各种波折,终于解决了,下面说一下操作步骤: 1、说明我的电脑配置:Dell品牌,其他感觉也不重要,就不说了 2、重启电脑,期间不停的按F10,会进入这个界面,如图: 3、按left键,选中Security,会出现如

2017-04-26 17:42:18 20913

原创 奇葩问题

04-24 02:47:03.658 2161-3551/com.google.android.googlequicksearchbox:search W/ErrorProcessor: onFatalError, processing error from engine(4)

2017-04-24 10:52:22 1057 1

原创 SD卡的写入权限问题

Android 6.0以后Google提高了Android的安全性,我们对SD卡的操作也不能像以前一样只要在manifest文件中声明<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />就可以了,我们还需要在代码中做如下设置: if (ContextCompat.checkSelfPermissio

2017-04-17 21:19:14 2824

原创 AS中jar包冲突解决方案

使用exclude 过滤可以很好的解决Android项目中jar包冲突的问题,比如说你的项目中引用了v7,同时又引入了v4,在Android 中v7包默认是包含v4包的,那么就可以使用exclude解决冲突,只需要添加如下代码:compile ('com.android.support:appcompat-v7:25.2.0'){exclude module: 'support-v4'}在你创建

2017-04-17 20:57:55 3257

原创 Umeng推送踩过的坑

前段时间公司APP搞分享,用了UMeng的社会化分享,现在要加个推送上来,本来以为十分简单,按照文档来就好了,谁知道其中也踩过几个坑,下面细数踩过的坑: 1、无ticker的时候,小图标icon显示不正常,如下图: 其实解决很简单,和我们没关系,只要UI把图片背景设置为透明就好了。 2、一些手机无法收推送,比如我的华为手机,原因是so配置问题,解决办法是去Umeng的U-Push SDK集

2017-04-11 11:21:50 592

原创 致我的同事

大概他也经历了如同以下人物的某种意外。。。。。。。。 《生死两难》原型Aron Ralston简介 阿伦·罗斯顿(Aron Ralston),别名艾朗·罗斯顿, 1975年10月27日生于美国,毕业院校卡内基梅隆大学机械工程系,爱好登山、探险,成功攀登了58座高峰。是《生死两难》电影主角的原型。 在2003年5月峡谷探险时遇到意外,右臂被夹在石缝中无法动弹,他只好借由身体的力量靠在

2017-04-06 22:05:00 943

翻译 适配超宽屏智能手机

为了向用户提供更具吸引力的观看体验,许多Android OEM正在尝试使用新的超宽屏智能手机。三星刚刚宣布推出新款旗舰设备,即三星Galaxy S8,采用全新的显示格式,宽高比为18.5:9。 LG移动世界大会在今年早些时候推出了新的旗舰设备,即LG G6,屏幕长宽比为18:9。 (左)在18.5:9设备上,最大纵横比设置为16:9的应用程序 (右)在18.5:9设备上,最大宽高比设置为或超过

2017-03-31 10:35:10 2981 3

原创 Android软件盘WindowSoftInputMode属性详解

在开发当中,我们常常需要让客户输入电话、验证码、金额、密码等,这个时候如果软件盘设置不好,那么可能导致一个糟糕的用户体验,比如可能会出现,软件盘遮挡住输入框下面的提交按钮,其他输入框无法输入等,其实只要我们设置好WindowSoftInputMode的属性,这种问题还是可以完美解决的。下面我们来看看WindowSoftInputMode的详细属性 属性主要分为两类: 控制软件盘显示的时机: 1

2017-03-28 23:41:49 317

原创 Android NFC介绍

NFC是什么? NFC是Near Field Communication缩写,即近距离无线通讯技术。NFC采用主动和被动两种通信模式。手机NFC支持三种工作模式:读/写标签模式,点到点模式,模拟卡片模式。 重要的包 重要的两个包:android.nfc和android.nfc.tech包 重要的类 android.nfc包下有四个: NfcManager:管理所有NFC Adapter,

2017-03-28 15:04:25 586

原创 Git的使用

一:切换git版本: 1.查看所有版本 which –a git 2.查看当前使用的是哪个版本 git –version 可以看到当前使用的是1.9.3版本 3切换到我们想用的版本: 首先输入 vim .bash_profile 然后要path环境指向想用的版本的bin路径 再然后输入 source .bash_profile 最后再 git –version 查看...

2017-03-20 20:34:49 3324

原创 Win7运行命令大全

1、cleanmgr: 打开磁盘清理工具 2、compmgmt.msc: 计算机管理 3、conf: 启动系统配置实用程序 4、charmap: 启动字符映射表 5、calc: 启动计算器 6、chkdsk.exe: Chkdsk磁盘检查 7、cmd.exe: CMD命令提示符 8、certmgr.msc: 证书管理实用程序 9、Clipbrd: 剪贴板查看器 10、dvdplay

2017-03-20 11:27:49 447

原创 AndroidStudio中依赖同一个jar解决方法

工作中可能会遇到这样的情况,例如,你的APP和某一个Module之间重复依赖了某个jar,或者是Module之间重复依赖了某个jar,这个是时候我们该怎么解决呢? 方法一:共同依赖某个jar 1.在自己的APP的build.gradle中引入 compile files(‘libs/*.jar’) 2.在Module的build.gradle中引入 provided files(‘lib

2017-03-19 11:24:28 942

HandlerDemo

HandlerDemo详细介绍了Handler的使用以及Handler导致内存泄漏的解决方案。

2018-04-14

空空如也

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

TA关注的人

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