自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(139)
  • 资源 (3)
  • 问答 (2)
  • 收藏
  • 关注

原创 不容错过的git各阶段撤销总结

不容错过的git各阶段撤销总结1、当修改了某个文件但是还没有使用git add提交到暂存区时候,如果想放弃该文件的修改git checkout – 文件名称2、如果已经使用了git add还没用git commit 然后不想要这个修改的内容了git reset HEAD 文件名称git checkout – 文件名称3、如果已经使用了commit,然后不想要该commit的时候git log查看提交的日志,然后找到想要回到的地方(例如:只是不想要刚刚的这个提交,那么找到刚刚的这个提交的上一个提

2020-11-12 19:33:02 232 1

原创 如何抓取安装的apk包的log

当我们debug的时候,连接的手机可以直接在logcat中看到崩溃日志,可是有些时候当我们直接安装打好包的app这个时候就没法在logcat看log了,这个时候可以使用adb去完成。使用电脑连接手机,然后进入终端,使用如下命令:adb logcat >文件导出的路径,如:adb logcat >Downloads/log.txt然后运行手机,当手机crash的时候就可以看见c...

2018-11-29 12:45:51 1035

原创 你应该拥有的面试题及答案

Q:String、StringBuffer和StringBuilder的区别?String一旦初始化就不可以改变,StringBuffer和StringBuilder可变StringBuffer是线程安全的,StringBuilder不是线程安全的(效率高)Q:String a="“和String a=new String(”")的的关系和异同?String str = “a”; 这个只是...

2018-10-12 16:02:20 790

转载 JDK源码中为什么在方法中创建一个临时变量替代成员变量、类变量

JDK源码中为什么在方法中创建一个临时变量替代成员变量、类变量 又名 临时变量提高Java代码性能一个Java类中可以存在多种形式的变量,可以是最一般的成员变量;或静态变量;或临时变量。那么这三种变量的存取效率如何?1、实战出真知package com.subject.variable;/** * 使用临时变量提高Java代码性能 (转) */public class Variab...

2018-10-09 16:20:11 278

转载 你真的了解Integer吗? 不你不了解

int和Integer的区别Integer是int的包装类,int的初值为0,Integer的初值为null注意:1,无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new出来的对象存放在堆,而非new的Integer常量则在常量池(在方法区),他们的内存地址不一样,所以为false。2,两个都是非new出来的Integer,如果数在-128到127之间...

2018-10-09 14:24:01 279

原创 ViewStub讲给小白的入门知识

ViewStub是啥?干啥的? ViewStub是一个轻量级的View,为啥说轻量级,因为他的大小为0,没有尺寸,也不绘制任何东西。 那他是干啥的呢,一个View不绘制东西有何意义,其实是用来延迟加载的,也可以理解为他就是用来占位置的(先把位置选了,需要的时候在把要显示的View加载出来)。如何显示要显示的View呢? 根据他的文档所说,有两种方式呈现出你想要的View...

2018-09-13 15:06:09 266

原创 带走所有scrollTo()和scrollBy()疑惑,嗨皮的离开

先说说他俩的区别 scrollTo():滑到哪里,不管你执行多少次,如果值不变,就位置不变,即滑到目标点 scrollBy():滑动多少距离,以现在的位置为起点滑动参数值的距离,执行多少次动多少次,不知道终点只知道一步一步的走下去。我们都知道,相对于手机屏幕的左上角为原点,向左为负向右为正,向上为负向下为正。在这里如果你想滑到你认为的(100,100)需要传入的是(-100...

2018-09-04 17:49:59 164

转载 Android开发进阶:Activity和进程的回收和状态恢复

转自:https://www.jianshu.com/p/72ccb08e7f34不管是安卓的官方文档还是源码注释,处处可见“从 Activity A 跳到 Activity B,当系统内存不足时 A 可能会被回收……”,而且没有明确说明 A 和 B 是否属于同一个 app 或进程。但是,在官方给的 Activity 生命周期图中,却说内存不足时低优先级的进程将被杀死。 那么,内存不...

2018-09-03 11:52:33 2153

原创 Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant)

具体的报错信息为: Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.出现这个问题是因为我在AndroidManifest.xml文件中的activity设置了theme,而且用的不是@style/Them...

2018-09-03 11:07:53 321

原创 小白秒懂系列之 Parcelable 和 Serializable 的 使用 以及他们的 区别

对这两个单词我想都不陌生吧,都知道是用来序列化的,可是为什么要序列化呢?永久性保存 对象,保存对象的字节序列到本地文件;序列化的对象可以在网络中传递;序列化的对象可以在进程间传递。那么我们知道它的用处了,可是如何选择呢?(Parcelable简称P,Serializable简称S)在使用内存时,P比S性能高所以使用P;S在序列化的时候会产生大量的临时文件,从而引起频繁的GC...

2018-08-31 13:35:53 183

原创 fastJson解析报错com.alibaba.fastjson.JSONException: create instance error...

如果解析的时候使用了内部类,那么就回报这个错,解析的这个实体类要么是正常的类要么是静态的类,不要是内部类,是就会报这个错

2018-08-28 15:08:06 1198

原创 在子线程中调用view.post(new Runnable)……,run方法不被调用

先看下总结在考虑要不要继续 总结:^_^view.post()方法不一定要在主线程中去调用 在onCreate()方法中去调用可以获取view的宽高,前提是主线程在子线程中调用view.post()方法可以起作用,但要注意调用的时机,在onAttachedToWindow后去调用在子线程中正确的调用view.post()方法run方法回到主线程,view.post()方法主要是为了异...

2018-08-28 14:49:16 1880

原创 ListView在setAdapter()后,getChildCount总是0的原因,getChildAt(index) 总是null的原因

使用ListView在setAdapter()后,对ListView的childView做一些操作。但是每次要取得childCount总是0。原來setAdapter是非同步(asynchronous)。只要在setAdapter()之后,加入post函式去更新ListView的ChildView即可。 lv = (ListView)findViewById(R.id.list);...

2018-08-27 15:37:24 796

原创 自定义View-----蒙版引导

先看看效果吧 看完图可以更直接的知道这个是干啥的,不过只实现了几种情况,其他的情况可以自己去计算去写。 实现的情况如下图(根据我的需求只写了这几个): 1、自定义Viewpackage com.example.a_0102.mylearn.demo;import android.content.Context;import android.graphics.Canvas...

2018-08-24 15:18:24 381

原创 Android内部显示PDF文件

同样使用网上流行的类库 1、添加依赖(在你的module中不是project中),添加后别忘记同步//pdfcompile 'com.github.barteksc:android-pdf-viewer:2.6.1'2、使用在xml文件中添加该布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmln...

2018-08-21 16:04:18 439

原创 多线程断点续传

多线程下载涉及到的知识点: 1、Service的使用:我们在Service中去下载文件; 2、Thread的使用:Service本身不支持耗时操作,所以我们要去开启线程; 3、Sqlite的使用:使用数据库来存储每个线程下载的文件的进度,和文件的下载情况; 4、权限:涉及到文件的读写就要用到权限; 5、BroadCastReceiver的使用:通过广播来更新下载进度; 6、线程池使用:...

2018-08-03 17:18:07 2863 1

原创 代理模式

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。代理模式的使用场景: 1、当无法或者不想直接访问某个对象,或者访问某个对象存在困难是,就可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,代理对象与被代理对象需要实现相同的接口。 2、代理模式可以在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。这里的间接性就是指不直接调用实际对象的方法,那么我们...

2018-08-03 15:29:12 163

原创 自定义View之图案解锁(手势密码)

图案解锁应用的越来越广泛,因为好奇所以,查了些资料自己也模拟了一个,有不对的地方,欢迎吐槽。1、首先我们可以知道我们没有这个现成的View, 所以需要自定义一个View:创建一个类继承View并实现构造方法2、创建一个Point的类,为啥不用系统的,因为:我们的这个点有三种状态:正常(即未绘制的时候)、已选中、不符合条件的状态,还有每个点有个属于自己的编号,为了将手势密码转为字符串...

2018-07-23 18:38:16 1172

原创 Android自定义圆形ImageView

相关的说明都在注释里面了package com.example.a_0102.mylearn.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import an...

2018-07-20 11:36:21 187

原创 getDrawable()返回null

在我们自定义ImageView的时候往往会遇到下面这个bugjava.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object referen...

2018-07-20 11:13:38 2687

原创 (小白秒懂)自定义ViewGroup之瀑布流布局

先说说我这里说的瀑布流布局指的是什么:就是有N个TextView,或者其他的View,依次排列开,和LinearLayout不同的是,可以换行 看看图吧,否则想不到,图片如下: 不用多想,肯定没有现成的View去使用,因为你也不知道一行有多少个,都是根据这个View的宽度自己去排列的。所以我们使用ViewGroup去自定义。public class MyGridView ext...

2018-07-18 14:22:07 279

原创 Android开启指纹验证

步骤:首先要检测手机是否支持指纹识别的功能其次要判断手机中是否已经录入了指纹开启指纹验证使用的类:1.FingerprintManager:主要用来协调管理和访问指纹识别硬件设备2.FingerprintManager.AuthenticationCallback这个一个callback接口,当指纹认证后系统会回调这个接口通知app认证的结果是什么3.Fingerpr...

2018-07-12 16:42:26 1099

原创 SingleTask启动模式的时候getInent方式取值不更新

先描述一下什么情况下会遇到这个问题:A界面—->B界面—–>C界面——>A界面,也就是说到达第二个A之前的页面不可以销毁,就是说还可以返回到A,但是经过C页面的操作后还会回到A,并刷新界面;那么我们不能从A界面返回,返回又回到了A吧,这个总感觉怪怪的。所以这个时候就要用到Android的启动模式singleTask,这样就避免了又回到了A的情况。接下来问题又来了,之前我们...

2018-07-10 19:28:43 668

原创 Service中弹Dialog

当我们直接在service的生命周期中创建一个dialog并调用show()方法让他显示的时候,会得到一个报错: Unable to add window – token null is not for an application因为我们知道Dialog必须放在一个Window上,以往都是放到Activity上,所以不会出现这样的错误,那我们联想一下在service中打开一个Activity...

2018-07-06 15:02:25 424

原创 java.lang.NoClassDefFoundError: Failed resolution of: Lio/bugtags/agent/instrumentation/okhttp3/OkHt

在使用Retrofit2.0的时候碰见这个问题:java.lang.NoClassDefFoundError: Failed resolution of: Lio/bugtags/agent/instrumentation/okhttp3/OkHttp3Instrumentation;找了一半天最后修改了一下Gradle的版本就解决了,要注意Gradle和Gradle插件的版本要对应上 Grad

2017-11-16 17:09:58 2204

转载 不要在Android的Application对象里存储数据

在一个App里面总有一些数据需要在多个地方用到。这些数据可能是一个 session token,一次费时计算的结果等。通常为了避免activity之间传递对象的开销 ,这些数据一般都会保存到持久化存储里面。有人建议将这些数据保存到 Application 对象里面,这样这些数据对所有应用内的activities可用。这种方法简单,优雅而且……完全扯淡。假设把你的数据都保存到Application对象

2017-09-11 17:15:38 626

原创 在onCreate()中获取某个View的宽高(post()方法)

我们都知道,在Activity的onCreate()方法中调用View的 getWidth()和getHeight()方法时,返回的值都是0,因为Activity调用setContentView方法只是创建了这个 View,调用了这个View构造方法而已,其中的onMeasure()方法还没被调用,所以不能知道它的宽高。但是,View有一个公开的方法post(),允许我们通过参数Runnable,在

2017-09-11 16:56:15 305

转载 传感器

一、引入:手机内置的传感器是一种微型的物理设备,它能够探测、感受外界的信号,将来自真实世界的数据提供给应用程序,应用程序然后使用传感器数据向用户通知真实世界的情况,或用来控制游戏进度、或实现增强现实等。至于具体如何去利用这些信息就要充分发挥开发者的想象力了。传感器目前已经成为了智能手机的标配。比较常见的传感器有:方向传感器、磁场传感器、温度传感器、光传感器、压力传感器、加速度传感器、重力传感器、陀

2017-09-11 16:35:13 756

原创 图片(Bitmap)二次采样、图片内存计算

一、二次采样在加载大量图片的时候经常会遇到OOM,为了避免OOM我们要对得到的bitmap做相应的处理。原理:不存储图片本身只存储图片的宽高 BitmapFactory.Options提供了另一个成员inJustDecodeBounds。设置inJustDecodeBounds为true后,decodeFile并不分配空间,但可计算出原始图片的长度和宽度,即opts.outwidth和opts.o

2017-09-11 16:04:03 343

原创 https://services.gradle.org/distributions/gradle-2.14.1-all.zip

Error:Could not install Gradle distribution from ‘https://services.gradle.org/distributions/gradle-3.3-all.zip’有时候在打开Github上的项目时会出现这个问题,看看怎么解决我们在我们的项目中找到这个文件然后修改画红线的地方,如果不知道怎么修改就看看没有问题的项目写的是多少,就改成多少就没问

2017-08-25 15:59:57 6002 1

原创 自定义View----自定义轮播图

先看看效果图吧: 有些时候会在好多的地方用到轮播图,而且每一个轮播图都要写一堆的逻辑,写起来超级麻烦,所以就给它写成一个View拿去用。一个轮播图需要一个ViewPager和一个指示器,所以我们需要写一个View里面有ViewPager和一个放指示器的LinearLayout。核心public class MyViewPager extends LinearLayout { private

2017-08-25 14:03:19 545 1

原创 MVP简单实现

我这里不多说什么是MVP,重点说怎么写MVP; 说明: MVP和MVC的最大区别:MVP中M和V之间没有直接的联系;V和P之间也是通过接口联系的。先看看他的目录结构:在这里可以看见model、presenter、view三个包。 然后看看里面的详细目录:好了下面开始创建我们的类了:1、首先看看view层我们模仿登录,界面很简单,有两个EditText和一个button。view层有两个东

2017-08-07 11:55:35 441

原创 Retrofit2、okHttp3、RxAndroid使用

前三篇讲了RxAndroid 、okHttp3 、Retrofit2的使用,接下来就看看这些东西怎么用吧。还记得okHttp和Retrofit中的返回值Call吗,现在我们就是要把它变为RxAndroid中的被观察者Observable,然后建立和观察者之间的关联。前一篇我们转换了Call< T>的T的类型为自己想要的东西,我们引入了Converter转换器,这里我们引入CallAdapter,来转

2017-08-04 14:11:49 1625

原创 Retrofit 菜鸟必入

一、添加依赖在Module的build.gradle中添加如下依赖: //retrofit compile 'com.squareup.retrofit2:retrofit:2.0.2' //retrofit String的转换器 compile 'com.squareup.retrofit2:converter-scalars:2.1.0' //retrof

2017-08-04 11:37:49 1000

原创 Okhttp3菜鸟必入

为啥要学Okhttp3呢,因为Retrofit中用到了,而且它本身也是一个网络框架,不与Retrofit一起用还可以单独用,一石二鸟为啥不学呢。这个相对也比较简单。一、添加依赖 //Okhttp3,后面的那个依赖如果不添加,有说链接不上数据库的,所以还是加上吧,我没添加没啥问题,保险起见 compile 'com.squareup.okhttp3:okhttp:3.3.0' c

2017-08-03 18:37:00 903

原创 RxAndroid菜鸟必入

为啥要学RxAndroid呢,因为我要用Retrofit,就这么简单粗暴;除了Rx还有OkHtpp3;接下来都会说的。不要着急~给Android开发者的Rx详解建议看看这篇文章,看过之后会就会都明白了 。一、基本概念和添加依赖Observer(观察者):事件触发的时候有什么样的行为; Observable(被观察者):决定什么时候触发事件,以及触发怎样的事件;subscribe(订阅):建立O

2017-08-03 16:59:09 618

原创 RxAndroid菜鸟必入

为啥要学RxAndroid呢,因为我要用Retrofit,就这么简单粗暴;除了Rx还有OkHtpp3;接下来都会说的。不要着急~一、基本概念和添加依赖:Observer(观察者):事件触发的时候有什么样的行为;Observable(被观察者):决定什么时候触发事件,以及触发怎样的事件;subscribe(订阅):建立Observer和Observable之间的关联。这里

2017-08-03 16:31:32 347

转载 android Log日志输出

1、打出的log后面要根上这个log的文件源头的连接,我可以直接点击跳转到log的位置2、log中还能提示我当前的线程名,方便调试3、可以打印出map,json这样的对象4、release包中不打印log5、可以控制log是否显示import android.util.Log;import org.json.JSONArray;import org.json.JSONException;imp

2017-07-25 14:24:55 877

原创 折叠式答题样式

先看看实现的效果 实现的效果说明: 答题区域始终在底部,每答一道题就向上添加一个折叠的样式;点击折叠的样式可以对该题进行修改,选中答案就折叠起来,如果,没有选答案,而去选择其他的题进行修改,也将刚才的那个折叠起来,也就是说最多可以有两个折叠的样式存在,点击下面新答的题,注意不是修改题,则折叠上面的所有。直接上代码吧,讲解都在注释中public class FoldTestActivity ext

2017-07-06 14:50:26 562

原创 展开样式答题写法

先看看实现的效果: 首先看到的第一反应就是一个ListView或者RecyclerView,但是这个里面要求只能按照顺序答题,也就是说,假设3题没有答,第四题是不能点击的。所以这里我用了LinearLayout模拟了一个ListView。1、自定义一个View,继承LinearLayout实现ListView的功能public class SelfTestView extends LinearLa

2017-07-06 11:56:08 645

volley.jar

Google提供的第三方网络库

2017-03-07

picasso-2.5.2.jar

图片缓存框架,一句话下载图片,方便快捷

2017-03-07

gson-2.3.1.jar

gson-2.3.1.jar

2017-03-07

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

TA关注的人

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