自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 常用国内镜像

/ 添加国内镜像地址,并调整仓库地址,解决下载依赖失败问题。

2024-03-21 10:55:32 584 1

原创 伪代码模拟View的点击事件分发

Android View 面试 点击事件 事件分发

2022-12-14 14:18:43 177 1

原创 View实现滑动的方式

Andorid View 滑动3.通过改变LayoutParams这里有个坑,注意你的父布局。比如约束布局上下左右的约束都设置了,那这个会有异常。上下都设置了约束,那view会居中,margin会在居中的基础上再生效。4.scollTo与scollByscollTo(x,y)表示移动到一个具体的坐标点,而scollBy(dx,dy)则表示移动的增量为dx、dy。其中scollBy最终也是要调用scollTo的。scollTo、sco

2022-12-07 18:47:11 183

原创 adb无线链接

adb无线链接 wifi adb

2022-06-01 18:13:47 537

原创 Android Studio 右侧Gradle Tasks不显示

去掉图中所选,重启AS即可

2021-08-04 14:50:49 797

原创 查看签名文件sha1

keytool -list -keystore debug.jks

2020-07-29 13:59:21 189

原创 Android组件化中拆分出Fragment单独运行

项目中的MainActivity是tablayout+viewpager组成,将各个模块拆分出来,因为由viewpager,所以各个模块展示是以Fragment为主。拆分出来后,单独的module是可以运行的,而Fragment是不能直接展示的,简单一点也需要一个Activity作为载体,而这个Activity又不能在整体打包时添加到项目中。需要的解决问题:1.独立运行时,需要一个Ac...

2020-04-14 14:07:04 871

原创 记录自己工作中奇怪的心态

1.出现问题后,很急躁。其实越急躁反而更容易出问题,适当的离开当前环境,出去抽支烟,稳定自己的心态,更加有利于问题的解决。2.需要沉下心做事。有时候需要强迫自己做一些事,才会发现其中的乐趣。千万要沉下心来!!3.少一些抱怨。抱怨解决不了任何问题,尤其是向你工作中身边的人抱怨。4.有时候更需要一些胆量。有时候能吹牛皮也是一种能力,很多人接到未曾接触过得工作时,都眼前一抹黑,但是还是要接受挑...

2020-02-19 17:09:41 175

原创 Glide 4.10.0崩溃问题

java.lang.IllegalStateException: GeneratedAppGlideModuleImpl is implemented incorrectly. If you've manually implemented this class, remove your implementation. The Annotation processor will genera...

2019-12-20 16:21:27 1845 2

原创 android.dagger使用

以注入OkHttpClient为例:之前我们需要@Moduleclass OkhttpModule { @Provides fun okhttpProvider():OkHttpClient{ return OkHttpClient() }}@Component(modules = [OkhttpModule::class])inter...

2019-09-12 15:50:20 217

原创 AsyncTask 源码分析

异步任务可以在工作线程中完成数据处理,并在主线程总更新UI,其使用简单,这里不做介绍。我们从无参构造函数开始分析: public AsyncTask() { this((Looper) null); } /** 初始化了mHandler、mWorker、mFuture **/ public AsyncTask(@Nullable Loope...

2019-07-09 18:14:43 141

原创 Android热修复原理及实现

原理:1、PathClassLoader只能加载系统中已经安装过的apk2、DexClassLoader可以加载jar/apk/dex,可以从SD卡中加载未安装的apk可以在Activity中打印 this.getClassLoader().toString() 输出就为dalvik.system.PathClassLoader。查看下PathClassLoader源码,其基本都是...

2019-04-26 12:01:19 320

原创 Retrofit缓存

有网络直接从网络请求数据,没有网络则从缓存读取数据。请求接口文件如下public interface MyApi { @GET("/") Call<String> getTest();}baseurl为http://www.appchina.com/1.拦截器如下: private Interceptor interceptor = n...

2019-04-18 15:51:24 921 1

原创 android与js之间的交互

简单介绍Webview的使用记得添加权限:&lt;uses-permission android:name="android.permission.INTERNET"/&gt;方法1:加载网络地址webView.loadUrl("https://www.baidu.com");方法2:加载本地网页写一段简单的html代码:&lt;html&gt;&lt;h1&...

2019-03-13 18:27:55 274

原创 Glide源码分析(一)加载R.drawable.*

本博客写于2019.3.8,当前Glide最新版本为4.9.0添加依赖: implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'Glide加载图片的常见用法://this 为 Fragm...

2019-03-08 11:58:46 2220

原创 Android 本地广播

正常的广播是全局广播,所有的应用都可以接收到,如果我们用其发送一些数据,容易被其他应用获取,引起安全问题。其他应用也可以发送广播,被我们的应用接收,也可能导致安全问题。所以引入了本地广播机制 使用LocalBroadcastManager来管理广播:调用LocalBroadcastManager.getInstance()来获得实例 调用xx.registerReceiver()来注...

2019-02-28 17:15:29 194

原创 Android View的点击事件分发机制

三个重要的方法:dispatchTouchEvent(MotionEvent ev):用来进行事件的分发 onInterceptTouchEvent(MotionEvent ev):用来进行事件的拦截,在dispatchTouchEvent()中调用,需要注意的是View没有提供该方法 onTouchEvent(MotionEvent ev):用来处理点击事件,在dispatchTouch...

2019-02-15 17:17:16 173

原创 Rxjava2切换线程原理

版本如下: implementation "io.reactivex.rxjava2:rxjava:2.2.5" implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'建议一边看博客,一边打开Android studio看代码首先分析 AndroidSchedulers.mainThread() ,后面分析Schedu...

2019-01-11 16:48:09 717

原创 ViewStub的使用

官方文档地址:https://developer.android.com/reference/android/view/ViewStub.html &lt;ViewStub android:id="@+id/stub" android:inflatedId="@+id/subTree" android:layout="@...

2019-01-03 11:43:49 1128

原创 IntentService的使用

IntentService启动的方式与Service相同,但在IntentServicezhon中会启动一个新线程来处理耗时操作从源代码中可以看出:public abstract class IntentService extends Service { public IntentService(String name) { super(); mNa...

2018-12-18 17:11:29 273

原创 使用Condition来实现等待/通知

使用Condition来实现wait()和notify()public class Main8 { public static void main(String[] args) { Lock lock = new ReentrantLock(); MyService service = new MyService(lock); new...

2018-12-13 16:21:25 238

原创 JAVA同步Lock之ReentrantLock类简单使用

public class Main7 { public static void main(String[] args) { Lock lock = new ReentrantLock(); Thread7 threadA = new Thread7(lock); threadA.setName("A"); Thread7 ...

2018-12-13 16:01:11 212

原创 JAVA多线程 join()方法

有时子线程中会做大量耗时运算,而主线程可能结束可能早于子线程,我们希望子线程结束后主线程再结束,我们就可使用join方法例如原来的代码是这样的:public class Main6 { public static void main(String[] args) { Thread6 thread6 = new Thread6(); thread6....

2018-12-13 14:43:38 130

原创 volatile关键字

public class Main3 { public static void main(String[] args) { MyRunable runable = new MyRunable(); Thread thread = new Thread(runable); thread.start(); try { ...

2018-12-12 17:02:17 127

原创 IPC进程间通信:AIDL

上篇文章使用了Messenger来进行进程间通信,其本质也是使用AIDL。这次service端模拟一个图书馆,Activity模拟一位读者,读者可以查看图书馆中的图书列表,可以添加图书,当有新图书加入时通知读者(即添加Listener)添加新进程中的service &lt;service android:name=".aidl.BookService"...

2018-12-11 18:06:43 184

原创 IPC进程间通信:Messenger

新建service进程 &lt;service android:name=".messenger.MessengerService" android:process=":remote" &gt;&lt;/service&gt; service代码如下public class MessengerService extends Ser...

2018-12-04 18:42:28 146

原创 Android常用跳转系统设置界面

android.provider.Settings。1.   ACTION_ACCESSIBILITY_SETTINGS :    // 跳转系统的辅助功能界面            Intent intent =  new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);             startActivi...

2018-07-10 18:42:05 409

原创 Android DataBinid在RecyclerView上应用

如果你不了解dataBinding,请看我的另一篇文章Activity布局文件如下,如果看过我的上一篇文章应该可以看懂这里的布局文件&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="...

2018-07-03 15:07:19 391

原创 Android dataBinding

使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上。在Android Studio中使用需要在Module下的build.gradle中添加android { ... dataBinding { enabled = true }}创建一个User类用来测试publ...

2018-07-03 11:52:28 315

原创 android 加密

public static String md5(String string) { if (TextUtils.isEmpty(string)) { return ""; } MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5"); ...

2018-07-03 10:28:58 186

原创 Android Handler 工作原理

Handler、Message、MessageQueue、Looper1.Looper.prepare();public static void prepare() { prepare(true);}private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() != null) { ...

2018-05-29 15:04:45 209

原创 Retrofit打印网络相关Log

dependencies { compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'}HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { @Ove

2018-01-10 14:04:53 289

原创 Retrofit添加通用Header

OkHttpClient client = new OkHttpClient.Builder().build();client.interceptors().add(new Interceptor() { @Override public Response intercept(Chain chain) throws IOException {

2018-01-10 13:49:53 758

原创 CardView 属性

CardView是在安卓5.0提出的卡片式控件在gradle文件下添加依赖库:compile 'com.android.support:cardview-v7:26.0.+'其常用属性:app:cardBackgroundColor这是设置背景颜色 app:cardCornerRadius这是设置圆角大小 app:cardElevation这是设置z轴的阴影 app:cardM

2018-01-05 14:13:17 752

原创 Android自定义控件中常见的方法

/** * onMeasure方法的作用时测量空间的大小 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

2018-01-04 17:55:05 280

原创 RxJava基本使用2

map变换操作符:将发送的数据按指定的函数去变化例子: Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception {

2018-01-03 15:10:36 224

原创 RxJava基本使用

我所使用的版本 compile 'io.reactivex.rxjava2:rxjava:2.0.1' compile 'io.reactivex.rxjava2:rxandroid:2.0.1'最简单的使用,类似于AsyncTaskObservable.create(new ObservableOnSubscribe() { @Override publ

2018-01-03 14:43:17 399

原创 kaptcha配置属性

ConstantDescriptionDefaultkaptcha.borderBorder around kaptcha. Legal values are yes or no.(设置是否有边框 )yeskaptcha.border.colorColor of the border. Legal values are r,g,b (and option

2017-08-18 11:49:43 4584

原创 解决Dynamic Web Module 3.1 requires Java 1.7 or newer

用Maven构建项目总出现题目上的问题,即使在 Java Build Path的libraries中修改,在Java Compiler 中修改,在Project Facet中修改全部正确后,还是有问题。在pom.xml中加入下面的代码即可 org.apache.maven.plugins

2017-07-20 16:48:33 411

原创 Maven打包war

org.apache.maven.plugins maven-war-plugin 2.4 WebRoot WebRoot下的文件会被直接复制进war包。在target目录下会生成war文件,直接复

2017-04-20 14:58:15 243

ssm整合maven项目

spring+springmvc+mybatis ssm整合 maven项目

2017-01-06

空空如也

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

TA关注的人

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