自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SpringQi

你们都别学了,我跟不上。

  • 博客(56)
  • 收藏
  • 关注

原创 Toolbar的简单使用和Activity全透明模式

实现功能:1.通用标题(多个activity使用同一个标题布局)2.状态栏全透明3.状态栏颜色黑白设置BaseActivity 代码如下:open class BaseActivity : AppCompatActivity() { protected var mToolbar: Toolbar? = null private var mTvTitle: AppCompatTextView? = null override fun onCreate(savedInsta

2021-08-07 19:21:16 289

原创 属性动画的基本使用

Android中动画大概可以分为补间动画,帧动画,属性动画三种(一)补间动画Animation分以下4种:1.TranslateAnimation 平移动画 x,y方向上的平移 对应xml标签 2.ScaleAnimation 缩放动画 x,y方向上的缩放 对应xml标签3.RotateAnimation 旋转动画 对应xml标签4.AlphaAnimation ...

2020-02-22 22:25:59 432

原创 事件分发机制分析

从源码中分析Android的事件分发机制,看懂了源码就知道了整个事件分发机制的流程,看事件分发机制之前我们要知道几个相关事件处理的方法,Android主要就是通过这几个方法对事件进行分发拦截处理的:(一)dispatchTouchEvent(MotionEvent ev) 该方法用于事件分发(二)onInterceptTouchEvent(MotionEvent ev) 该方法可拦截事件Vi...

2020-02-16 19:43:10 271

原创 SVG相关知识与应用

SVG,即Scalable Vector Graphics 可伸缩矢量图形,这种图像格式在前端中已经使用的非常广泛了。首先要解释下什么是矢量图像,什么是位图图像?1、矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML来描述二维图形的语言,所以它可以直接打开xml文件来修改和编辑。2、位图图像:位图图像的存...

2020-02-13 22:09:57 965

原创 Canvas的应用实例

(一)实现水平滑动相册中间被选择的部分图片高亮显示效果实现原理:1.需要两组图片,一组为高亮显示图,一组为对应的暗色显示图2.水平滑动这里使用了HorizontalScrollView3.显示图片的控件为LinearLayout中动态添加ImageView4.通过ImageView的setImageDrawable来给控件设置显示图片5.这里主要使用了自定义Drawable类,并对图...

2020-02-09 23:48:24 1104

原创 Canvas的基本使用

(一)Canvas上的图形绘制RectF mArcRect=new RectF(0,0,300,300);1.绘制画布带透明度的颜色值canvas.drawARGB(255,255,0,0);canvas.drawColor(Color.RED);2.绘制矩形canvas.drawRect(mArcRect,mPaint);canvas.drawRoundRect(mArcRect,...

2020-02-05 13:45:27 1172

原创 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 201

原创 EventBus的使用与实现原理

2019-05-21 00:39:25 1630

原创 android中图片滤镜效果

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

2019-04-20 22:49:44 1798

原创 android中Xfermode的使用

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

2019-04-20 22:09:20 2242

原创 Android shader相关用法实例

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

2019-04-20 20:07:22 209

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

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

2019-03-10 16:02:02 373

原创 从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 168

原创 C语言的初步学习理解

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

2018-09-07 12:13:13 675

原创 android中网页打开APP简单使用

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

2018-08-01 14:46:09 1989

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

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

2018-07-27 15:26:31 2505 1

原创 android倒计时功能实现

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

2018-07-09 16:59:39 2989

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

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

2018-07-09 14:28:40 774

原创 Android Lifecycle相关

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

2018-05-31 14:51:15 338

原创 TextView文字居中显示

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

2018-05-28 11:37:27 3592

原创 View的绘制流程

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

2018-02-01 15:49:07 228

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

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

2018-01-28 22:35:44 442

原创 雷达扫描效果SweepGradient的使用

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

2017-05-31 16:42:09 2442

原创 自定义圆形进度条

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

2017-05-27 16:19:28 514

原创 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 1577

原创 自定义瀑布流控件WaterfallFlowLayout

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

2017-05-26 17:10:11 1368

原创 自定义流式布局FlowLayout

应用截图 实现思路: 1.继承自ViewGroup 2.重写onMeasure()方法,根据测量模式测量出控件的宽度和高度(其中包含了子控件的margin值),通过setMeasuredDimension(newWidthSize, newHeightSize);设置控件的宽高 3.实现onLayout()方法,对它的每一个子View进行布局设置,规则为从左到右依次排列,该行放不下

2017-05-26 10:07:59 298

原创 第三方登录

有时候我们开发的app需要方便用户简单登录,可以让用户使用自己的qq、微信、微博登录到我们自己开发的app。 今天就在这里总结一下以便以后使用。 (一)QQ登录操作流程 首先我们打开腾讯开发平台这个网页,点击—->移动应用—->创建应用,成功创建应用后,可以产生我们需要的App ID和App Key。然后我们需要下载SDK开发包,下载完后解压我们可以得到两个jar包mta-sdk-1.6.2.

2017-03-07 14:35:08 1581

原创 android中px与sp,dp之间的转换

由于Android手机厂商很多,导致了不同设备屏幕大小和分辨率都不一样,然而我们开发者要保持在不同设备上显示同样的视觉效果,就需要做一些适配效果。 相关名词解释 屏幕大小:通常指的是屏幕对角线的长度,使用“寸”为单位来衡量。 分辨率:指手机屏幕的像素点个数,例如:720*1280,指的是宽有720个像素点,高有1280个像素点。 dpi:指的是每英寸像素,是由对角线上的像素点数除以屏幕大小所

2016-12-17 22:00:51 27637 1

原创 高德地图java.lang.UnsatisfiedLinkError异常 找不到.so文件

高德地图在手机上运行奔溃的问题,java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file couldn't find "libgdinamapv4sdk752.so"

2016-08-08 21:53:48 1554

原创 打开第三方应用选择并过滤掉不想被打开的应用

屏蔽QQ的调用,通过第三方软件打开各种类型文件

2016-08-08 21:24:25 1311

原创 饼状图(PieChart)与柱形图(BarChart)的使用

最近在工作中需要用到饼状图与柱状图的功能,网上查了一下MPAndroidChart开源图表库是一个很好的东西,并下载了MPAndroidChart项目运行。于是自己写了一个简单的例子,使用PieChart(饼图)的方法如下: 源码下载地址:https://github.com/PhilJay/MPAndroidChart

2016-06-16 17:21:33 16287 3

原创 MenuDrawer的简单使用

使用MenuDrawer,直接导入jar包即可使用,jar包下载地址http://maven.outofmemory.cn/net.simonvt.menudrawer.sample/samples/3.0.4/,点击Maven中央仓库下载samples-3.0.4.jar。将其放入libs文件夹中即可使用。在Android studio中build.grade文件夹中也可如下引入:compile

2016-06-14 23:32:16 1864

原创 用于显示不同数据状态的父View

在实际项目开发中,通常我们请求网络数据的时候会出现以下情况:1.无网络2.无数据3.服务器错误等等;面对这种情况,我们需要给用户不同的展示界面,当加载数据完成时,我们就显示有数据的界面,加载数据出现错误时我们给用户一种界面提示和重新加载的效果。由于平时用的比较多,每次都在布局文件中写相同的布局代码重叠实现这种效果,于是自己抽时间写了一个简单的BaseView使用。BaseView代码如下:

2016-06-13 15:07:59 319

原创 实现自定义侧滑菜单效果

看了郭大神的 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现博文后,对实现侧滑菜单有了基本的实现思路,然后通过自己的思路整理一遍。实现思路:一个activity内并排显示两个布局,在左边的布局为菜单布局,在右边的布局为内容布局;在初始化界面的时候,将菜单布局完全隐藏,把内容布局显示在可视视图中;在用户滑动的过程中通过水平滑动的距离,动态修改菜单和

2016-05-16 15:54:33 369

原创 沉浸式状态栏实现,让状态栏和导航栏变色吧

该功能只能适应Android4.4及以上版本,4.4版本真机,5.0版本真机,6.0版本模拟器测试通过该方法来自https://github.com/jgilfelt/SystemBarTint开源库实现步骤:(一)Android Studio项目添加依赖包compile 'com.readystatesoftware.systembartint:systembartint:1.0

2016-05-13 13:56:43 1758

原创 使用Messenger实现进程间的相互通信

## 使用Messenger实现进程间的相互通信 ##

2016-04-30 18:42:01 1335

原创 关于Button点击两次才响应事件相关问题

本文来自http://www.cnblogs.com/xiaoweiz/p/3833079.html      首先我们来看看touch mode的定义。它是用户和手机进行交互时view层次结构的一个状态。它本身是很容易理解的,代表了最近一次的交互是否是通过触摸屏发生的,因为在Android设备上还存在别的交互方式,比如D-pad、滚动球等等。  为什么Android会引入

2016-04-28 17:19:26 6940

原创 ViewStub的初步了解与merge和include的使用

标签可以允许在一个布局当中引入另外一个布局,那么比如说我们程序的所有界面都有一个公共的部分,这个时候最好的做法就是将这个公共的部分提取到一个独立的布局文件当中,然后在每个界面的布局文件当中来引用这个公共的布局。标签是作为标签的一种辅助扩展来使用的,它的主要作用是为了防止在引用布局文件时产生多余的布局嵌套。大家都知道,Android去解析和展示一个布局是需要消耗时间的,布局嵌套的越多,那么解析起

2016-04-21 14:25:52 506

原创 以动画的方式实现View的展开和缩放

实现View的展开和缩放,类似ExpandListView

2016-03-12 17:42:57 1127

空空如也

空空如也

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

TA关注的人

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