- 博客(26)
- 收藏
- 关注
转载 Android中测量Text的宽度和高度
Android中,在自定义View中通过Canvas绘制文字时,经常需要测量文字的宽度和高度。这里记录下几种比较常用的方法,仅作备忘。Paint.measureText (测量文本的宽度)Paint paint = new Paint();paint.setTextSize(size);float strWidth = paint.measureText(str);Pai...
2018-01-29 17:10:39 3918
转载 Java中BigDecimal的8种舍入模式
1、 ROUND_UP 舍入远离零的舍入模式。 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数字加1)。 注意,此舍入模式始终不会减少计算值的大小。2、ROUND_DOWN 接近零的舍入模式。 在丢弃某部分之前始终不增加数字(从不对舍弃部分前面的数字加1,即截短)。 注意,此舍入模式始终不会增加计算值的大小。3、ROUND_CEILING 接近正无穷大的舍入模式。
2018-01-11 16:40:04 4818 3
原创 Android 利用 Xfermode 来实现圆形头像,矩形描边 View
先上一个 Xfermode 整体的图片实现方法如下: 通过新建涂层,先将外部的边框(半径为图片一半减去描边的宽度)画出来,参考 PorterDuff.Mode.DST_OUT 模式然后将新建的图层和 自身图片合并之后,再通过 外层实现 mCircleShape 将多余的边框裁减掉,参考 PorterDuff.Mode.DST_IN 模式自定义属性参考如下: 自定义属性 默认值 描述
2017-12-27 22:27:17 586
原创 Android中转义字符
下面是android中需要转义的表: 字符 ASCII码 转义字符 “ " " & & & < < < > > > 空格 换行 \n 制表符 \t
2017-12-26 23:16:02 7755
原创 Java 位运算符总结
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:A = 0011 1100B = 0000 1101-----------------A&b = 0000 1100A | B = 0011 1101A
2017-12-24 21:05:22 355
原创 Android下载管理DownloadManager介绍和使用封装
DownloadManager简单介绍 DownloadManager是系统开放给第三方应用使用的类,包含两个静态内部类DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息。先上DownloadManager的用法:DownloadMa
2017-11-30 13:51:05 1826
原创 Rxjava 实现倒计时的方法
实现倒计时的方法有很多种,常见的一般有CountDownTimer new CountDownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
2017-11-28 17:29:56 3125
原创 Okhttp 请求添加公共参数、公共Headers 方法
安卓开发中,http 网络请求的框架有很多,有 HttpUrlConnection、 Volley 、 Okhttp很多种,现在由于 retrofit 和 rxjava 的出现, Okhttp 的使用越来越多,因为 Retrofit 也仅仅是在 Okhttp 做的一层封装,那么需求上需要我们在每一个 URL 请求中添加一个固定的参数时候,或者将请求的消息头统一改为我们需要的形式,我们要怎么实现呢?我
2017-11-27 12:14:52 22134 2
原创 安卓 View 工作流程-Measure、 Layout、Draw 源码阅读
我们在开发中都接触过 ViewRootImpl 这个类,ViewRootImpl 在 View 的绘制和事件分发都起到至关重要的作用,我们先来看看 View 的测量绘制流程是怎么传递的: 我们知道在 Activity 创建的时候 makeVisible通过代理类 WindowManagerGlobal的 addView(View view, ViewGroup.LayoutParams param
2017-11-26 16:52:18 333
原创 安卓5.0 SVG动画 VectorDrawable 和 AnimatedVectorDrawable 使用详解
我们都知道 SVG动画是在 Android 5.0之后提供的可伸缩矢量图形。在讲如何如何在 Android 5.x 中使用 SVG 之前,我们先了解一下 SVG 中的 便签。 - 标签所支持的指令 - M = moveto(X,Y) :将画笔移动到指定的坐标位置,但未发生绘制 - L = lineto(X,Y) :画直线到指定的坐标位置 - H = horizontal l
2017-11-25 18:02:49 385
原创 安卓 SurfaceView 和 View 的区别和使用方法
Android 系统提供了 View 进行绘图处理,View 可以满足大部分的绘图需求,但在某些时候,View 通过刷新来重绘视图,Android 系统通过发出 vsync 信号来进行屏幕重绘,刷新的间隔时间为 16ms,如果在这个时间间隔内完成了你所需要执行的所有操作,那么在视觉上,就不会产生卡顿的感觉,而如果执行的操作逻辑太多,特别再需要频繁刷新的界面上,例如游戏界面,那么就会不断阻塞主线程,从
2017-11-24 21:23:04 1966
原创 安卓 adb 命令大全
ADB 工具位于 SDK 的 platform-tools 目录下,因此在命令行中使用 ADB 的时候,需要通过 cd 命令,切换到该目录下,或者将 ADB 添加到环境变量中直接使用。配置好了,在命令行中可以输入下面命令。Android Debug Bridge version 1.0.39Revision 3db08f2c6889-android下面介绍一些我总结的常用的 ADB 命令:and
2017-11-24 19:42:11 942
原创 Android 实现 View 滑动的七种方法
记录下系统提供的 View 滑动的 API 方法。不管采用哪一种方式,本质的思想基本上都是一致的,当触摸 View 的时候,记录下当前触摸点的坐标,当手指移动的时候,记录移动后的触摸点坐标,从而获取相对上一次坐标点的偏移量,通过偏移量来修改 View 的坐标,这样不断重复,从而实现滑动过程。layout 方法 @Override public boolean onTouchEvent(M
2017-11-07 22:38:13 1196
原创 安卓 onCreate 方法获取 view 宽高的方法
我们在开发中经常会遇到在界面中比如 activity 使用到控件的 width 或者 height,大家也都知道在 onCreate() 中去 getWidth() 或者是 getMeasuredWidth() 拿到的结果都是 0,这是因为我们的 activity 的创建和 view 绘制不是同步的,下面我总结了一些方法来获取 view 的宽度和高度的方法:View.Post(new Runnab
2017-11-07 18:14:48 296
原创 java在运行时获取泛型实例的方法
如题,有时候我们在接口中或者是抽象类使用泛型来适应子类不同的类型,可是当我们需要拿到泛型实例或者泛型类型的时候,可以这样去得到:抽象类和接口各不相同。抽象类获取泛型实例的方法Class<?> aClass = obj.getClass();//先得到类的字节码Type genericSuperclass = aClass.getGenericSuperclass();// 返回超类的type
2017-11-07 17:59:37 3558
原创 安卓 ViewDragHelper 介绍和使用方法详解
首先看一下 ViewDragHelper 的介绍我们知道在自定义 ViewGroup 中经常看到 ViewDragHelper 的身影,官方介绍说它提供了一些有用的操作和状态跟踪,允许用户在其ViewGroup中拖动和重新定位视图。我们来看下使用方法:首先创建 ViewDragHelper 使用 静态方法 create(),ViewDragHelper 构造器对外隐藏,创建方法 /**
2017-10-18 18:08:49 667
原创 android:windowIsTranslucent 和 activity 动画关系
<item name="android:windowIsTranslucent">true</item> <style name="ActivityAnimation" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/activit
2017-10-10 18:34:02 636
原创 Android View 四个构造函数作用
public TextView(Context context) { this(context, null); } public TextView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, com.android.internal.R.attr.textVi
2017-09-26 13:47:50 383
原创 NoScrollListView 设置 Adapter 后 getView() 方法 view 会进行复用的问题
我们在开发过程中会出现在 scrollView 中嵌套 listview 的情况,一般情况下,我们将 listview 高度设置为根据自己 item 的高度总和来将 listview 滑动功能去掉,然后 scrollView 在滚动的时候,其实是在 scrollView 中的内容在滚动,这里面也包括 我们自定义的 不滚动的 listview。NoScrollListView 一般写法如下:publi
2017-07-28 11:32:29 647
原创 LayoutInflater 的 inflate 方法引发的 RelativeLayout 测量方法异常
LayoutInflater inflate 最终都会执行三个参数的方法public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot) { final Resources res = getContext().getResources(); if
2017-07-25 15:26:26 820 1
原创 安卓 View 设置宽高 wrap_content 属性无效的原因
查看 AppCompat 主题 Button 的默认 style “Base.Widget.AppCompat.Button”<style name="Base.Widget.AppCompat.Button" parent="android:Widget"> <item name="android:background">@drawable/abc_btn_default_mtrl
2016-11-22 15:08:48 3461
原创 关于安卓6.0的权限笔记
Android 6.0 中不仅要在 AndroidManifest.xml 中声明权限,还在运行的时候增加了权限动态判断涉及到的以下权限都会在运行时被判断,包括下面的权限权限 传感器日历摄像头通讯录地理位置麦克风电话短信存储空间 在 Android 6.0 中默认对 targetSdkVersion 小于 23 的应用申请的权限进行允许,但是在 targetSdkVersion
2016-10-11 09:34:43 310
原创 Webview加载 URL 失败的原因分析和解决办法
在使用webview加载URL失败的情况,检查其他地方有没有调用webview的pauseTimers 方法public void pauseTimers ()此方法不仅仅针对当前的webview而是全局的全应用程序的webview,它会暂停所有webview的layout,parsing,javascripttimer。降低CPU功耗。解决方法 在需要调用webview加载的时候添加下面的方法p
2016-08-11 15:29:29 3792
原创 Git命令 reset 和 revert 的区别
reset 和 revert 的区别git resetresetgit reset [--soft | --mixed | --hard- -mixed工作区不变,只是将版本库和暂存区 信息回退到了某个版本.- -soft工作区不变,只回退到commit 信息到某个版本.暂存区不变,直接commit即可再次提交.- -hard工作区和暂存区都会回退到某个版本.(本地代码仓库源码)如果在远程pu
2016-08-01 13:59:01 457
原创 安卓 Notification 使用方法 API的更新
在使用自定义notification时候,remoteView.setTextViewText()方法时,需要给textview设置一个color或者主题,因为默认颜色白色跟背景一样。 Notification.Builder builder = new Notification.Builder(this) .setSmallIcon(R.mipmap.ic_lau
2016-08-01 11:36:36 349
原创 关于Gradle多渠道打包的问题
关于Gradle多渠道打包的问题 刚开始公司用ant的打包方式,后来换了Android-studio开发之后,就换做gradle多渠道打包,一时间确实方便了很多,配置非常,打包时间跟电脑配置有很大的关系。因为一直用的是友盟统计,下面简单记录下大致的流程。之前打包的代码是这么的,因为需要在调用接口的时候传渠道号<application> ......<meta-data andro
2016-07-28 15:42:04 324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人