4 跑快点

尚未进行身份认证

不断地巩固自己,努力走好每一步。

等级
TA的排名 7w+

ButterKnife的基本使用和实现原理

一.基本使用1.在Project的build.gradle中添加如下配置buildscript { repositories { mavenCentral() } dependencies { //添加插件 classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1' }}2.在Module...

2019-05-22 14:53:51

EventBus的使用与实现原理

2019-05-21 00:39:25

android中图片滤镜效果

对图像进行一定的过滤处理,颜色值时32位的int值,ARGB:A—Alpha值,RGB—颜色值1、Alpha滤镜处理MaskFilter类进行处理BlurMaskFilter–用来绘制模糊阴影EmbossMaskFilter–用来实现浮雕效果2、颜色RGB的滤镜处理1、色彩的平移运算—加法运算在最后一列加上某个值,这样就可以增加特定色彩的饱和度色彩的反转/反相;增加饱和度2...

2019-04-20 22:49:44

android中Xfermode的使用

通过使用Xfermode将绘制的图形的像素和Canvas上对应位置的像素按照一定的规则进行混合,形成新的像素,再更新到Canvas中形成最终的图形。我们一个像素的颜色都是由四个分量组成,即ARGB,A表示的是我们Alpha值,RGB表示的是颜色S表示的是源像素,源像素的值表示[Sa,Sc]Sa表示的就是源像素的Alpha值,Sc表示源像素的颜色值D表示的是目标像素,目标像素的值表示[Da,...

2019-04-20 22:09:20

Android shader相关用法实例

Shader —着色器,Canvas的drawXXXX这个方法是画具体的形状,画笔的shader定义的就是图形的着色和外观(一)BitmapShader–位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说是用图片对图形进行贴图 例如:圆形头像,放大镜效果(二)LinearGradient 线性渲染 例如:霓虹灯文字,倒影图片(三)SweepGradient 渐变渲染/梯度...

2019-04-20 20:07:22

Scrollview嵌套Listview显示一行问题解析

从源码的角度分析Scrollview嵌套Listview显示一行问题,主要关注ScrollView和ListView的Measure过程,ScrollView的OnMeasure()方法@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { **//这里调用了父类的on...

2019-03-10 16:02:02

从setContentView开始,了解view的加载过程

从setContentView(R.layout.activity_main);为入口分析View的UI绘制过程public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save...

2019-03-09 13:32:44

C语言的初步学习理解

基本数据类型 printf(); scanf(); 通过vs查看内存地址 数组定义 C语言数组在声明的时候就必须确定大小和基本类型 const 创建一个大的内存数据测试 数组存储在stack上 stack大小是有限的 ,系统自动释放内存;动态申请的内存在堆里,需要手动释放 动态申请内存 malloc() 释放内存delete() sizeof 关键字, 计算类型所占用的内存...

2018-09-07 12:13:13

android中网页打开APP简单使用

通过用手机的浏览器访问一个网页,点击网页中的一个链接来启动APP,并将数据传递给APP使用自定义的URIscheme实现跳转,URI主要分三个部分:scheme,authorityandpath。其中authority又分为host和port。scheme://host:port?param(传递的值name=value&name=value…)测试HTML网页如下...

2018-08-01 14:46:09

手机系统广播监听和启动第三方程序应用

(一)需求描述: 公司马上要实行钉钉考勤,并且只有连接到公司wifi才能进行打卡,可是我公司在30楼,就算你现在楼下排队等电梯还是不能打卡,还是避免不了迟到真是坑爹;我发现我每次打开钉钉它会自动帮我极速打卡,于是我脑子浮现出一种想法,我每天早上在上班时间之前启动一次钉钉不就可以自动打卡了,于是乎我做了一个app通过这个app来启动钉钉。就这样我准备了一台公司的测试机,设置每天开关...

2018-07-27 15:26:31

android倒计时功能实现

最近项目要求做一个倒计时功能,进入答题界面前开始弹框倒计时3,2,1,倒计时完成弹框消失之后请求数据,答题计时开始10,9,8…3,2,1。倒计时一直都用CountDownTimer,但是在界面展示进度和播放声音的时候总是有一些误差,开始计时的时候太快了以及执行onFinish()方法延迟,于是自己仿写了一个CountDownUtil用于倒计时操作。CountDownUtil代码如...

2018-07-09 16:59:39

Activity中输入框EditText被键盘遮挡问题

在项目开发过程中,一般app都有意见反馈这样的功能,布局中有很多文本框,布局底部存在一个提交按钮;用户在输入文本的时候,输入框经常被键盘遮挡,不能与键盘显示适配,很是头疼,我在网上找了很多方法,最后总结了一下,可以很好的解决这个问题。解决思路:当键盘显示的时候我们发现布局被键盘遮挡了一部分,这个时候我们根据可见区域的高度动态的去修改布局的高度以达到适配的效果。注意:内容布局最外层需要用Sc...

2018-07-09 14:28:40

Android Lifecycle相关

Lifecycle是什么 Lifecycle是Android Architecture Components 的一个组件,用于将系统组件(Activity、Fragment等等)的生命周期分离到 Lifecycle 类,Lifecycle 允许其他类作为观察者,观察组件生命周期的变化。 Lifecycle是为了实现Android中Activity和Fragment生命周期中代码逻辑控制的解耦。...

2018-05-31 14:51:15

TextView文字居中显示

项目中经常出现一种情况,当标题是一行的时候要水平居中显示,标题超过一行的时候需要左对齐显示;我们需要获取文字的显示行数来动态控制TextView的Gravity属性。如果实在列表中使用则使用这种方式获取tvTitle.getViewTreeObserver().addOnPreDrawListener(newViewTreeObserver.OnPreDrawListener(){...

2018-05-28 11:37:27

View的绘制流程

View的绘制流程主要是指measure(测量)、layout(布局)、draw(绘制)三大流程,其中measure是测量控件的宽高,layout是确定view的布局left,top,right,bottom四个点的坐标从而确定它的最终宽高和摆放位置,draw是将view绘制在屏幕上。 View绘制流程是在ViewRootImpl类的performTraversals()方法开始的,该方法主要是

2018-02-01 15:49:07

Activity如何将布局文件添加Windows窗口

一.首先了解几个概念 1.Window和PhoneWindow 一个顶级窗口查看和行为的一个抽象基类。这个类的实例作为一个顶级View添加到Window Manager。它提供了一套标准的UI方法,比如添加背景,标题等等。当你需要用到Window的时候,你应该使用它的唯一实现类PhoneWindow。可以看到,Window是一个抽象基类,它提供了一系列窗口的方法,比如设置背景,标题等等,而它的

2018-01-28 22:35:44

雷达扫描效果SweepGradient的使用

实现效果如图: 实现原理: 原理很简单主要通过SweepGradient对圆进行扫描渐变效果,注意渐变颜色要从不透明到透明,通过不断旋转画布来实现扫描效果,注意这里画布原点在(0,0)点需要将其平移到控件的中心位置,不然会以(0,0)这个点进行旋转 代码如下:public class RadarScanView extends View { private static final

2017-05-31 16:42:09

自定义圆形进度条

实现效果 实现思路: 1.绘制背景圆形 2.绘制中间文字进度,需要计算文字绘制的起点,保证文字在控件的中心,这里用到了measureText()方法对文字宽度进行测量,文字绘制是从基线开始绘制,所以要通过FontMetrics来计算文字文字y坐标上的位置才能放在中间显示(具体计算参考代码) 3.绘制进度圆弧, 圆弧起点角度固定,通过显示进度值动态改变圆弧的结束角度来绘制圆弧一.自定义Vi

2017-05-27 16:19:28

Paint基本用法

Paint 基本使用 1.1 负责设置获取图形绘制、路径相关的 1.setStyle(Paint.Style style) 设置画笔样式,取值有 Paint.Style.FILL :填充内部 Paint.Style.FILL_AND_STROKE :填充内部和描边 Paint.Style.STROKE :仅描边、 注意STROKE、FILL_OR_STROKE与FILL模式下外轮廓的位置会扩

2017-05-26 17:48:37

自定义瀑布流控件WaterfallFlowLayout

效果如下图所示:实现效果:每个子项的宽度相同高度可能不同的布局实现思路:1.由于项宽度相同,则高度需要根据图片比例进行计算得出2.用一个数组来存储每一列的总高度,将子控件添加到总高度最小的那一列的后面3.通过onMeasure()方法计算出控件的高度,控件的高度为所有列高中最大的值,并自定义LayoutParams类,将子控件的left,top,right,bottom封装到

2017-05-26 17:10:11

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。