自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

simplepeng的博客

爱编程,爱折腾,Enjoy the Development

  • 博客(61)
  • 资源 (4)
  • 收藏
  • 关注

原创 自定义全局异常捕获-SpiderMan

如何自定义一个全局异常捕获器-SpiderMan一图胜前言上图中,我们模拟了NullPointerException的发生,系统捕获了该异常,并用一个界面展示了出来。如何实现想要实现全局异常的捕获我们需要了解Thead中的一个内部接口UncaughtExceptionHandler,该接口在JDK1.5中被添加。所有我们需要自定义一个类去实现该接口,并且设置给Thread的Defaul...

2019-01-09 14:56:10 996

原创 Android Studio找不到navigation标签的解决办法

最近在学习JetPack-Navigation组件的使用,但是在AS中能新建navigation的文件夹却不能新建navigation的xml文件,于是上Stack Overflow找了一下解决办法还真找到了。解决办法找到Settings(Mac是Preferences)中的Experimental选项,选中Enable Navigation Editor选项,然后重启。...

2018-11-20 11:48:28 2751

原创 MacOS 10.10 以上解决机械键盘按键无法识别

MacOS 10.10 以上解决机械键盘按键无法识别题主的配置是 MacBook Pro ,系统10.13,机械键盘高斯87以前装的黑苹果,系统10.10,机械键盘可以完美使用,但是现在用了MacBook Pro机械键盘确有几个键无法识别出来,就是按了没有反应,这几个可恶的键就是”Esc”,”BackSpace”,”Tab”和”Space”,使用Karabiner-EventView可以看...

2018-08-15 21:26:12 25577 2

原创 Android使用cmake+ndk输出原生Log

Android使用cmake+ndk输出原生Log我们可以在c/cpp代码中用print函数输出log信息,但是这样在logcat并不会显示,好在Android已经给我提供了相应的方法解决这个问题:使用log.h头文件开始创建一个新的Android Studio的工程项目勾选Include C++ support选项然后就是一路next直到创建项目成功项目结构生...

2018-08-15 11:52:47 5461

原创 自定义SnackBar

前言我浏览material.io网站时,从所谓的“Material Design 2”中找到一些新的组件,并发现Snackbar已经改变了,它不再占用整个屏幕长度,并且周围会有一个间距。但我并没有从Support Library的alpha版本中找到它,所以我决定自己实现一下。1、创建Drawable文件<shape xmlns:android="http://s...

2018-07-10 16:52:07 2196

原创 Android架构组件—ViewModel

探索Android架构模式中ViewModel前言我们中的大多数人都遇到过旋转手机并且应用程序崩溃或UI失去状态的问题。解决它最简单的办法就是配置Activity为potrait模式,但这是一个很糟糕的做法。幸运的是,Android团队在2017年Google I / O期间发布了ViewModel。该ViewModel类被设计用来保存与UI相关的数据并且它是可以感知生命周...

2018-06-28 11:59:00 2840 1

原创 Android架构组件—LiveData

Android架构组件—LiveData前言LiveData 是一个可以保存数据和观察数据变化的组件。他是被设计用来在ViewModel中保存数据,但是同样也可以在应用的其他地方使用。LiveData使用观察者模式监听数据的改变。这与RxJava的Observable非常类似,但是LiveData不止于此,LiveData是具有生命周期感知能力的。简单的说,LiveData...

2018-06-28 11:58:30 2118 1

原创 Android架构组件(Architecture Components)介绍

Android架构组件(Architecture Components)介绍为什么需要架构组件 之前有多少人是把所有代码都写在 Activity里面?几乎每个人都干过一次,对吧!Android 框架层面上允许自由的做到上面这点,但是后来我们意识到了这么做会带来的问题,这使得我们的代码变得臃肿不堪,难以维护。所以才出现了像mvp,mvvm这样不同的架构模式,这使得我们可以编写更...

2018-06-28 11:58:05 1360

原创 使用Gradle和Kotlin组织Android的资源文件

使用Gradle和Kotlin组织Android的资源文件前言如果您已经开发了3年或4年的App应用程序,那么您可能会注意到资源文件夹是如何变得混乱不堪的。尽管大多数开发人员会专注于组织他们的Java / Kotlin文件(通过功能或屏幕),但资源文件通常无人看管。尝试减少混乱的一个尝试是使用文件的命名约定。例如,在一些使用的布局文件中:activity_*.xmlfragment_*.xml

2018-04-20 16:33:55 1226

原创 Android Material Buttons

前言Google Material Design 的文档中提到:“当按钮被触摸时应该给与用户相应的反馈”,现在有了compat支持库实现这种效果将会非常简单。添加资源将最新的appcompat库添加到您的项目中dependencies { //replace X.X.X with the latest version compile 'com.android.support:appc

2018-04-19 20:01:35 1872

原创 约束布局(ConstraintLayout)1.1.0的新特性

约束布局(ConstraintLayout)1.1.0的新特性约束布局无疑是最适合构建响应式用户界面的布局-根据屏幕大小自动调整的布局。很高兴ConstraintLayout发布了1.1.0版本,1.1.0的这些新特性让ConstraintLayout能够做出更好的工作,并且不丢失原有的特性。圆形定位(Circular Positioning)当一个View需要根据另一个View进行定位时,该角度和

2018-04-19 12:56:29 1791 3

原创 优化嵌套的RecyclerView

优化嵌套的RecyclerViewRecyclerView是ListView的更高级版本,它重用相同的视图以防止额外创建视图以提供平滑的滚动体验。RecyclerView通过保持视图池来实现这一点,该视图池包含不再可见并且可以回收的视图。有时我们需要嵌套RecyclerView来创建一些布局。考虑在垂直方向RecyclerView内部有水平RecyclerView的情况。在上图可以...

2018-04-10 10:39:51 3845 3

原创 从Java切换到Kotlin:5个令Android开发者兴奋的特征

1.命名参数每个Java开发者的噩梦:大量的参数(例如在Cursors或Android中创建SQLite查询),它们的名字和方法定义中的顺序。如果没有文档或IDE帮助,您无法在Java中正确编写它@Overridepublic Loader<Cursor> onCreateLoader(int i, Bundle bundle) { return new Curs...

2018-04-10 10:36:08 480

原创 ViewDragHelper简解

ViewDragHelper简解概述ViewDragHelper是一个用于编写自定义视图组的实用程序类。它提供了许多有用的操作和状态跟踪,允许用户在其父视图组中拖动和重新定位视图。(ps:来自官方注释)简单入门创建ViewDragHelper的实例回调相关触摸的方法public class DragLayout extends LinearLayout { private ViewDra

2018-03-01 21:21:36 179

原创 关闭Android Studio自动折叠方法

关闭Android Studio自动折叠方法方法自动折叠是这个样子 取消自动折叠,取消Method bodies的勾选即可

2017-12-29 00:06:55 4292

原创 Android架构组件Room的使用

Android架构组件Room的使用Room其实就是一个orm,抽象了SQLite的使用,但是它作为Android的亲儿子orm,并且原生支持LiveData和Rxjava嵌套使用,学习一下还是不错的。Room有3个主要组件Database :数据库Entity : 代表数据库一个表结构Dao : 包含访问数据库的方法简单使用添加Google Maven仓库allprojects {

2017-12-26 18:42:48 13089 1

原创 kotlin使用Parcelize注解简化Parcelable的书写

kotlin使用Parcelize注解简化Parcelable的书写Parcelize注解kotlin在1.1.4版本增加了对parcelable的支持Android扩展插件现在包含一个实现了Parcelable的自动生成器。在主构造函数中声明序列化的属性并添加一个@Parcelize注解,生成器就会自动创建writeToParcel()/ createFromParcel()方法需求环境Kotli

2017-12-05 11:58:27 7238

原创 JNI 动态注册

public class MainActivity extends AppCompatActivity { // 加载so static { System.loadLibrary("native-lib"); } @Override protected void onCreate(Bundle savedInstanceState) {

2017-11-11 14:50:23 330

原创 Vysor 破解

分析源代码可知软件在uglify-list.js文件内通过_il变量判断是否注册成功, 于是配置该变量为true,打开 uglify.js文件, 搜索 _il变量, 将 _il:Te.a() 替换为 _il:true, 然后重启chrome和vysor. 发现Vysory已经变为专业版了。uglify.js文件在chrome的Extensions文件夹下,可以用开发者模式先找到扩展的id。然后到这个

2017-03-13 15:44:12 4459

原创 RxJava常用操作符

常用操作符 http://reactivex.io/documentation/operators.html#alphabetical创建操作用于创建Observable(被观察者)的操作符Create(创建) — 通过调用观察者(observer)的方法从头开始创建一个ObservableDefer(推迟) — 在观察者订阅之前不创建这个Observable,为每一个观察者创建一个新的O

2017-03-03 09:37:53 1450

原创 AndroidStudio Jni 开发初识

NDK 是什么?NDK是一系列工具的集合,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk为什么使用NDK代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用。开始使用下载ndk环

2017-01-13 16:55:48 283

原创 在自定义view中画 .9 的Bitmap

//加载点9位图 NinePatchDrawable npd = (NinePatchDrawable) getResources() .getDrawable(R.drawable.xxxx); //设置需要的范围边界 Rect rect = new Rect(left, top,top, bottom); npd.se

2017-01-10 16:44:52 750

原创 Android 发布Library到Jcenter

前言习惯了 compile ‘com.android.support:appcompat-v7:24.2.1’ 这种依赖第三方库的方式,简直不要太爽。那为什么这么一句话就可以引入一个第三方库呢?这全是Jcenter的功劳,Jcenter不知道是什么?那真的可以自己Google一下了。 现在我们自己尝试一下把自己的Library上传到Jcenter,这里我用自己以前开源的项目Updater当例子来试

2016-12-30 15:23:04 435

原创 JavePoet 初体验

前言javapoet是square公司旗下的一款开源项目,旨在用java api 生成.java源代码文件,英语好的同学可以直接移步该项目的gayhub地址。 https://github.com/square/javapoet举个例子假如要生成类似这样的一个文件package com.simple;import java.lang.String;impor

2016-11-03 10:47:45 421

原创 Android Studio 布局中引用自定义属性不提示的问题

Eclipse里面自定义属性的命名空间的声明一般都是xmlns:app="http://schemas.android.com/apk/res/com.xxx(包名)而Android Studio里面的命名空间声明则是xmlns:app="http://schemas.android.com/apk/res-auto但是在布局中使用自定义属性时发现并不会自动提示声明好的属性,一直困惑了很久才发现自定

2016-10-12 17:34:33 7918 7

原创 ViewPageerTransform深入理解,给viewpager切换加动画

ViewPagerTransforms的深入理解每当viewpager上一个可见或依附的页面发生了滚动事件就会调用PageTransformer,这让应用可以使用自定义transformation让viewpager某一个页面视图上实现某些特定的动画属性。但是这样的属性动画只能支持到android3.0版本或以上,在早期的版本上设置viewpager的PageTransformer会被忽略。公有方法

2016-08-20 23:02:27 9706 4

原创 使用Android Support Annotations优化你的代码

Android Support Annotations提供的注解允许你想lint检查那样提供一些提示在代码审查上,可以帮助你解决一些难以发现的代码问题。添加依赖选择File > Project Structure点击Dependencies标签点击“+”按钮然后选择Library dependency那项在弹出的选择框选择support-annotations然后点击o

2016-08-16 11:54:19 2889

原创 Git 常用命令

查看、添加、提交、删除、找回,重置修改文件显示command的help git help command显示提交内容 git show 显示某次提交的内容 git show $id抛弃工作区某个文件的修改 git co – filename抛弃工作区所以文件的修改 git co . 将工作文件的修改提交到本地暂存区 git add filename 将所有修改过的工作文

2016-08-12 16:46:29 267

原创 AndroidStudio对比Eclipse快捷键

debug/run 操作 studio eclipse 计算变量值 alt+F8 ctrl+shift+I 跳到下一步 F8 F6 跳到下一个断点 shift+F8 F8 进入到代码 F7 F5 停止运行 Ctrl+F2 debug运行app shift+F9 F11 运行app shift+F10 ct

2016-08-12 15:13:21 515

原创 很简单就实现垂直滑动的ViewPager

VerticalViewPager/** * 垂直滑动的ViewPager */public class VerticalViewPager extends ViewPager { public VerticalViewPager(Context context) { this(context, null); } public VerticalViewPa

2016-08-11 17:33:24 6145 1

原创 Ubuntu 16.04 安装wine-qq 7.8 并解决不能输入中文问题

安装wine-qq肯定是需要wine,wine-7.8需要wine1.7以上的版本。不知道怎么安装wine的可以百度一下,如果你是64位系统需要安装amd64版本的wine,这些都是很简单的东西,这里就不罗嗦了。wine-qq7.8的下载地址 http://www.longene.org/forum/viewtopic.php?f=6&t=30516如果你是64位系统需要输入先解决兼容问题,32

2016-08-10 21:07:13 12427

原创 自定义Drawable 实现波纹扩散效果

自定义drawablepublic class RippleDrawable extends Drawable implements Animatable { //需要的画笔 private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); //画笔的颜色 private int bg_color = Color.BLU

2016-08-10 17:16:43 1418

原创 Android Gradle manifestPlaceholders 的妙用

开发中很多时候我们会遇到这种场景,比如说:在用到一个第三方sdk,但是这个sdk并没有区分开发环境和线上环境,这时候我们就可能会申请两个不同的key标识,而且很多key标识都只能在androidmanifest里面配置。所以每次上线生成apk就必须手动去更改key标识,如果渠道版本少也还好,打包速度快也还行,需要区分环境的的key标识相对较少也还不错 ,但是如果你一项都沾不到边,到时忘记哪个key忘

2016-07-30 20:37:34 56083 3

原创 Android Gradle BuildConfig的妙用

首先我们看看buildconfig在哪个目录下,一个是debug环境,另一个是当你打包apk才会生成 的release正式环境的buildconfig,我这里是为了比对,都生成出来了。 debug环境下的buildconfig/** * Automatically generated file. DO NOT MODIFY * 已经说明了这个文件是自动生成的,不要去改变它 */pa

2016-07-25 22:55:50 4451 3

原创 基类的popupwindow,带点击区域外消失,返回键消失

public class BasePopupWindow extends PopupWindow { public Context mContext; public BasePopupWindow (Context context) { super(context); this.mContext = context; //popWindo

2016-07-04 16:10:43 460

原创 CoordinatorLayout+CollapsingToolbarLayout+Toolbar+Listview/Gridview

CollapsingToolbarLayout中放Imageview和toolbar,然后下面放listview不能实现recycleview或者NestedScrollView同样的效果。google了吧,在Stack Overflow 上找到了答案。用下面这句就好了ViewCompat.setNestedScrollingEnabled(listView/gridview,true); (

2016-05-05 10:36:39 958

原创 Ubuntu创建启动快捷方式

以androidstudio为例终端进入/usr/share/applications,新建文件 gedit AndroidStudio.desktop [Desktop Entry] Name=AndroidStudio Comment=AndroidStudio Exec=/developer/android/android-studio/bin/studio.sh Icon=/de

2016-05-02 15:38:30 477

原创 Ubuntu 16.04 切换Launcher位置

Ubuntu 16.04 切换Launcher位置gsettings set com.canonical.Unity.Launcher launcher-position Bottom–将launcher移动到底部gsettings set com.canonical.Unity.Launcher launcher-position Left–将launcher移动到左边只能在左,下切换!!!

2016-04-24 22:23:23 1315

原创 Error:Execution failed for task ':transformResourcesWithMergeJavaResForDebug'

androidstudio 运行app报错:Error:Execution failed for task : transformResourcesWithMergeJavaResForDebugcom.android.build.api.transform.TransformException : com.android.builder.packaging.DuplicateFileExcept

2016-01-21 16:28:45 1845

原创 Error:Execution failed for task ':transformClassesWithJarMergingForDebug'

androidstudio 运行app报错Error:Execution failed for task :transformClassesWithJarMergingForDebug’com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/umeng/

2016-01-21 16:13:31 1103

仿支部包支付完成dialog

仿照支付宝支付成功的一个简单实例dialog

2016-01-06

HiJson解析器

绝对好用的json解析器,编辑器。使用HiJson工具并通过此工具快速查看JSON字符串、熟悉JSON的数据结构。针对程序员来说,如果了解了连续字符串对应的JSON的数据组成,便可以快速对JSON字符串进行数据处理。

2015-08-28

sublimeText

Sublime Text 是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。 Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。 2012年6月26日推出新版本的Sublime Text 2.0,与之前版本相比主要有较大的改善:支持 Retina 视网膜屏、快速跳到下一个、文本拖放、改善构建系统、CSS 自动完成和高亮设置等。

2015-08-28

markdownpad

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。

2015-08-28

空空如也

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

TA关注的人

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