自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 Canvas绘制圆角矩形时的圆角粗边问题

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewCompat.setBackground(findViewB

2017-09-01 14:39:18 1985 2

原创 关于View设置selector不支持state_pressed的问题

在网上找了很多方案,都不能解决问题,最后尝试把TextView换成Button就能支持state_pressed了,换回TextView还是不行,原来TextView不支持selector的state_pressed,要添加pressed的效果的话,建议使用button。 以前一直以为Button和TextView没多大区别,今天才发现,在这上面区别大了去了。记一笔,往后面踩坑的人能看到这篇文章。

2017-08-18 15:19:23 1002

原创 java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0

java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0 at android.text.SpannableStringInternal.checkRange(SpannableStringInternal.java:357) at android.text.SpannableStringIn

2017-08-04 09:55:19 6621 3

原创 集成阿里推送SDK中的问题:Duplicate zip entry UTDevice.class

在集成阿里云移动推送过程中,混淆打包时报错:Warning:Exception while processing task java.io.IOException: Can't write [D:\AndroidProjects\IMachinetool\app\build\intermediates\transforms\proguard\beta\release\jars\3\1f\main.j

2017-07-12 14:03:58 3162 2

原创 自定义属性引入layout获取不到resourceId的问题

今天自定义View想达到,能引入layout的效果,例如: 自定义属性:<declare-styleable name="CustomView"/> <attr name="empty_layout" format="reference"<declare-styleable>使用:<CustomView android:layout_width="match_parent"

2017-07-07 16:04:01 2124

原创 AnnotationProcessor之Element和TypeElement

原文(摘自Java8的官方文档): Represents a class or interface program element. Provides access to information about the type and its members. Note that an enum type is a kind of class and an annotation type is a

2017-05-23 16:46:55 1075

原创 Failed to resolve: com.android.support:support-annotations

我在Android工程中新建了一个Java library,在dependency中加入了"com.android.support:support-annotations:25.3.1"这个依赖库,结果在编译时报错: 在网上找的原因说是因为和android其他库的版本号不统一,但是统一之后仍然会报错,随我我模仿butterknife-annotations的build.gradle文件的写法在里面

2017-05-16 14:36:30 4186

转载 Gradle中的buildScript代码块 - 黄博文

原文链接:http://www.cnblogs.com/huang0925/p/3940528.html?utm_source=tuicool&utm_medium=referral在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码:build.gradlebuildScript { repositories { mavenCentral()

2017-05-16 11:22:43 608

原创 实现3D翻转效果的仿ViewPager

演示效果受限于录屏软件,真实效果,请安装sample github地址:https://github.com/sheaye/cube-pager-master特征该控件直接继承自ViewGroup,具有以下特点: 1. 立体三维的翻转效果; 2. 可以无限循环地向左或者向右翻转; 3. 可以设置定时翻转; 4. 支持任意张图片; 5. CubePager始终只维持3个子View,支持

2017-05-12 14:38:04 2181 3

原创 使用bintray_release插件轻松上传库到Jcenter

bintray上传使用的插件很多,我看到的有android-maven-plugin,gradle-bintray-plugin等等,但是都没有novoda/bintray-release来的简单,下面介绍一下这个插件的使用,其开源库在这里:https://github.com/novoda/bintray-release,参照它的wiki,我在其基础上有一些小小的简化。一、 准备工作:注册Bint

2017-05-11 18:36:14 776

原创 TinkerPatchException:loader classes in old primary dex are mismatched to those in new primary dex

我集成的是bugly的tinker-support插件,今天打补丁时出现如上错误,错误原因是bugly的tinker-support的SDK升级,导致基线版本和补丁版本所用的sdk版本不一致:将’com.tencent.bugly:crashreport_upgrade:latest.release’降级到与打基线时的SDK版本,问题解决。同志们如果经过以上更改没有解决问题,将com.tencent

2017-05-10 15:45:32 2527

原创 Android的事件分发机制(一):dispatchTouchEvent

1. 准备demo:(1)打印MotionEvent的工具类:public class Motions { public static String getMotionEventName(MotionEvent motionEvent) { int action = motionEvent.getAction(); switch (action) {

2017-04-19 13:53:52 717

原创 导出Javadoc文件时的编码问题

1. 在根文件夹下的gradle文件中:allprojects { ... tasks.withType(Javadoc) { options{ encoding "UTF-8" charSet 'UTF-8' links "http://docs.oracle.com/javase/7/docs

2017-04-13 14:21:58 1528

原创 PagerAdapter中的NotifyDataSetChanged

我们知道ViewPager设置PagerAdapter之后通过notifyDataSetChanged方法也可以更新ViewPager,那么这是怎么实现的呢?答案是观察者模式。下面我们顺藤摸瓜看看,这个观察者模式是怎么实现的。首先是PagerAdapter的notifyDataSetChanged方法:public void notifyDataSetChanged() { synchr

2017-04-12 11:42:44 1369

原创 实现bugly仅在release下上传错误日志和mapping文件

bugly在错误跟踪上功不可没,但是如果在工程中没合理设置也会带来一些令人头疼的问题。比如把调试模式下的错误也上传到bugly,调试时上传mapping文件影响编译速度。这里我提供一种方法解决以上问题:一. 让bugly仅在打release包时上传mapping文件以下代码均写在app的build.gradle文件中: 1.定义判断buildType的方法和全局变量isRelease。因为isR

2017-03-21 11:13:37 7543

原创 在AndroidMenifest动态引用ApplicationId,解决INSTALL_FAILURE_CONFLICTION_PROVIDER

有时候我们需要在打多个渠道包时需要用到不同的包名,但是在同一部手机上仍然无法安装不同applicationId的安装包,这时候可以用adb命令进行安装,找到出错的原因。 比如我今天碰到的问题Failure [INSTALL_FAILURE_CONFLICTION_PROVIDER],去清单文件发现问题出现在bugly的provider上:<provider android:

2017-03-14 15:47:22 4185

原创 像适配ListView一样适配ViewPager的的PagerAdapter

源码:public abstract class BasePagerAdapter<T> extends PagerAdapter { protected Context context; private List<T> list; private List<View> views; public BasePagerAdapter(Context context) {

2017-01-18 12:41:33 933

原创 两种方法实现VersionCode和VersionName自增

方法一:根据当前时间实现版本号自增//按日期生成的包名def versionTag() { return new Date().format("MMdd", TimeZone.getTimeZone("UTC"))}// versionCode按时间自增def increasedVersionCode(){ return (int)(System.currentTimeMilli

2016-12-12 14:04:03 5464 2

转载 Android studio Error :...you can't have non-Gradle Java modules and Android-Gradle modules ...

http://stackoverflow.com/questions/28668252/android-studio-error-unsupported-modules-detected-compilation-is-not-supported解决办法: 1. File -> Invalidate Caches / Restart -> Invalidate Caches & Restart.

2016-11-29 15:57:45 2720

原创 设置Toolbar透明

为了设置一张图片作为背景,要将Toolbar设置为透明,为了这个折腾一天了,网上各种教程都试过了就是没用,每次设置Toolbar透明之后,Toolbar都成了白色,怎么也找不到原因,最后最后才发现因为我顶层布局用到是LinearLayout,设置Toolbar透明之后显示的是Activity的底色!啥也不说了把代码贴上来。感谢这篇文章让我找到了原因:http://stackoverflow.com/

2016-11-17 20:23:06 12175 1

原创 自定义ImageView实现图片的拖动、缩放和边界回弹

图片的缩放和拖动在上自定义View实现图片的拖动和缩放中已经提到,这里是紧承上文新添加边界回弹功能。 所谓边界回弹指的是类似微信修改头像截取图片时,如果将图片的边缘拉开了屏幕(View)边界,松手后有个回弹动作。 小小的边界回弹功能还让我折腾了好几天,起初用的是Scroller,但是使用过程中发现,如果在边界频繁向一个方向拖动,scrollX(Y)会朝着一个方向不断增大,这时候换个方向,只有不停

2016-09-12 23:25:42 2227 1

原创 自定义View实现图片的拖动和缩放

参考文章 1. Android 手势检测实战 打造支持缩放平移的图片预览效果(上) 2. Android 手势检测实战 打造支持缩放平移的图片预览效果(下) 3. 我的Android进阶之旅——>android Matrix图片随意的放大缩小,拖动整体思路: 1. 实现缩放功能: (1) 创建ScaleGestureDetector对象,实现ScaleGestureDetector.O

2016-09-06 11:58:34 1324

原创 什么是Cookie?

参考链接:百度百科·cookie (储存在用户本地终端上的数据) 一、Cookie是什么?Cookie 本意是指就着牛奶一起吃的点心。在Internet上,Cookie指的是小量信息。Cookie是由 Web服务器创建并保存在用户浏览器上的小文本文件,它以key/value的形式保存用户的相关信息,这些数据通常会经过加密处理。当用户链接到服务器 , Web站点可以访问Cookie信息。 二、C

2016-09-01 14:08:08 2625

原创 HTTP协议

参考文档: 1. wireshark怎么抓包、wireshark抓包详细图文教程 2. 深入理解HTTP协议 3. Cache-control 百度百科 4. HTTP中cache-control的应用及说明 5. 让浏览器不再显示https页面中的http请求警报 6. 关于HTTP头(header)的Vary的解释 7. transfer-encoding:chunked的含义一、

2016-08-31 12:50:03 620

原创 2.3 UDP套接字

实际上UDP只实现两个功能: 1. 在IP协议的基础上添加一层地址(端口); 2. 在数据传输过程中可能产生的数据错误进行检测,并抛弃已损坏的数据。与TCP不同的特征: 1. UDP套接字在使用前不需要进行连接。TCP类似通话,而UDP像邮件通信。 2. 对信息边界的处理方式不同:UDP套接字将保留边界信息,这个特性使得应用程序在接收信息时,某些方面比TCP套接字更简单。 3. UDP协议

2016-08-22 23:33:26 796

原创 2.2 TCP套接字

Java为TCP协议提供了两个类:Socket和ServerSocket。一个Socket实例代表TCP连接的一端。一个TCP连接是一条抽象的双向通道,两端由IP地址和端口号确定。建立TCP连接的过程: (1) 客户端TCP向服务端TCP发送连接请求。 (2) ServerSocket实例监听TCP连接请求,并为请求创建新的Socket实例。也就是说,服务器端要同时处理ServerSock

2016-08-20 16:42:04 529

原创 2.1 套接字地址

InetAddress类代表一个网络目标地址,包括主机名和数字类型的地址信息。该类有两个子类Inet4Address和Inet6Address分别代表IPV4和IPV6。InetAddress实例不可变。IP地址实际上是分配给了主机和网络之间的连接,而不是主机本身。NetworkInterface类提供了访问本机所有接口信息的功能,这个功能非常有用,比如当一个程序需要通知其他程序其IP地址时

2016-08-19 17:15:01 619

翻译 史上最全的WebSettings说明

setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(Content Url),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。setAllowFileAccess (boolean allow) 是否允许访问文件,默认允许。注意,这里只是允许或禁止对文件系统的访问,Assets 和 resource

2016-08-18 18:25:04 16466 4

原创 TBS腾讯浏览服务的SDK接入

首先对腾讯TBS的官方文档要痛斥一顿,按它的说明操作,只会把你带入死胡同。下面开始入正题了:Share Only 版引入依赖库compile 'com.jakewharton:butterknife:7.0.1',与项目本身无关,不喜欢findviewById而已。将shareOnly版本的jar包复制到libs文件夹中,然后同步(Sync Project with Gradel Files)。

2016-08-18 13:58:25 18278 12

原创 Android 新版支付宝API开发

创建应用,定义应用名,获取APPID,其他信息可以暂时不补充。获取RSA(SHA1)密钥,应用网关和授权回调地址移动端可不用管:2.1 使用支付宝提供的一键生成工具windows工具或IOS工具注意:工具不支持含中文或空格的路径,请下载到英文目录下使用。 针对windows:解压后直接运行“支付宝RAS密钥生成器SHAwithRSA1024_V1.0.bat”,然后点“打开文件位置”。路径下有

2016-08-07 23:12:07 4886 5

原创 Effective Java 第4章 类和接口

第13条 使类和成员的可访问性最小化模块之间只通过API进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念就是封装。 第一规则:尽可能使每个类或者成员不被外界访问 实例域不能是公有的。 使用公有的静态final数组域,是安全漏洞的一个常见根源第14条 在公有类中使用访问方法而非公有域如果类是包内访问或者私有嵌套类,直接暴露它的数据域并没有本质的错误 让公有类直接暴露域虽然从来都不是

2016-08-04 22:23:29 591

原创 百度地图API获取发布版SHA1

新版百度地图API增加了发布版SHA1,开发版SHA1按官方教程操作即可,这里介绍一下发布版SHA1的获取方法。为apk签名,生成keystore文件(如果已经有keystore文件,跳过此步骤) 打开cmd,定位文件夹到.andorid下,默认路径是users/用户名/.android 输入keytool -list -v -keystore *.jks,*.jks为keystor

2016-08-04 12:42:33 7290 2

原创 React-Native 基础(六) 使用Flexbox布局

参考文档:http://facebook.github.io/react-native/docs/flexbox.html 1. 使用flexbox可以指定子布局 2. flexbox兼容不同尺寸的手机屏幕 3. 通常使用flexDirection, alignItems, 和justifyContent的组合实现目标效果flexDirection 指定子布局是横向(row)还是纵向(col

2016-07-29 13:40:45 696

原创 React-Native 基础(五) Height and Width

参考文档:http://facebook.github.io/react-native/docs/height-and-width.html1. Fixed Dimension 静态尺寸 React-Native所有尺寸都是无单位,密度无关像素import React, { Component } from 'react';import { AppRegistry, View } from 'r

2016-07-29 12:30:33 940

原创 React-Native 基础(四)使用style定义组件的样式

参考文档:http://facebook.github.io/react-native/docs/style.htmlstyle是一个propsstyle的键值命名格式遵循CSS风格,除了名字使用驼峰法则而不是使用分隔符。例如背景色:backgoundColor,不是background-color可以传递style数组,最后一个style有优先权,因而可以使用它继承styles为了组件的扩

2016-07-29 10:44:06 3694

原创 React-Native 基础(三) 使用State改变状态

参考文档: http://reactnative.cn/docs/next/state.html#content http://reactnative.cn/docs/next/state.html#content我们使用两种数据来控制一个组件:props和state. props定制的内容,一经组件创建,内容不再改变。 需要改变的数据使用state. 使用state 1. 在const

2016-07-29 10:27:45 7500

原创 React-Native 基础(二) 使用Props实现传参定制

参考文档:http://reactnative.cn/docs/next/props.html#content 根据我蹩脚的英文水平来看,Props来源于英文单词Property有属性的意思(Props作为一个完整单词来看译为支柱,不合语境)。官方库提供的props 下面以Image为例,这里的source和style就是props.<Image source={pic} style={{wid

2016-07-29 10:11:39 1729

原创 Effective Java(二) 对于所有对象都通用的方法

本章将讲述何时以及如何覆盖这些非final类的Object方法(虽然Comparable.compareTo不是Object方法,因为类似也会涉及)第8条 覆盖equals时请遵守通用约定什么时候应该覆盖equals方法呢? 如果类具有自己特有的“逻辑相等”概念(不等同于对象等同),而且超类没有覆盖equals方法以实现期望的行为,这时应该覆盖equals方法。 有一种“值类”不需要覆盖equa

2016-07-21 23:16:56 515

原创 Effective Java(一) 创建和销毁对象

本章的主题时创建和销毁对象: 1. 何时及如何创建对象; 2. 何时及如何避免创建对象; 3. 如何确保创建的对象能够适时销毁; 4. 如何管理对象销毁之前的清理动作。第1条 考虑用静态工厂方法代替构造器 静态工厂方法与设计模式中的工厂方法模式不同,静态工厂方法并不直接对应于设计模式中的工程方法。 一、静态工厂方法的优势: 1. 它们有名称。一个类只能有一个带有指定签名的构造器,静态工

2016-07-18 22:22:40 533

原创 React-Native 基础(一) 我的第一个React-Native

React Native开发环境配置 React Native——第一个示例 React Native第一课 新手提问前先来这里看看-react-native的常见问题总体上按照官方教程一步一步走,以下对我踩过的部分坑说明一下。// 安装react-native-clinpm install -g react-native-cli// 初始化项目react-native init A

2016-07-18 13:38:43 1176

空空如也

空空如也

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

TA关注的人

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