Android
杜子麟
喜欢编程。看好安卓!
展开
-
伪代码模拟View的点击事件分发
Android View 面试 点击事件 事件分发原创 2022-12-14 14:18:43 · 178 阅读 · 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 · 185 阅读 · 0 评论 -
adb无线链接
adb无线链接 wifi adb原创 2022-06-01 18:13:47 · 539 阅读 · 0 评论 -
Android Studio 右侧Gradle Tasks不显示
去掉图中所选,重启AS即可原创 2021-08-04 14:50:49 · 799 阅读 · 0 评论 -
查看签名文件sha1
keytool -list -keystore debug.jks原创 2020-07-29 13:59:21 · 189 阅读 · 0 评论 -
Android组件化中拆分出Fragment单独运行
项目中的MainActivity是tablayout+viewpager组成,将各个模块拆分出来,因为由viewpager,所以各个模块展示是以Fragment为主。拆分出来后,单独的module是可以运行的,而Fragment是不能直接展示的,简单一点也需要一个Activity作为载体,而这个Activity又不能在整体打包时添加到项目中。需要的解决问题:1.独立运行时,需要一个Ac...原创 2020-04-14 14:07:04 · 874 阅读 · 0 评论 -
记录自己工作中奇怪的心态
1.出现问题后,很急躁。其实越急躁反而更容易出问题,适当的离开当前环境,出去抽支烟,稳定自己的心态,更加有利于问题的解决。2.需要沉下心做事。有时候需要强迫自己做一些事,才会发现其中的乐趣。千万要沉下心来!!3.少一些抱怨。抱怨解决不了任何问题,尤其是向你工作中身边的人抱怨。4.有时候更需要一些胆量。有时候能吹牛皮也是一种能力,很多人接到未曾接触过得工作时,都眼前一抹黑,但是还是要接受挑...原创 2020-02-19 17:09:41 · 176 阅读 · 0 评论 -
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 · 1847 阅读 · 2 评论 -
Android View的点击事件分发机制
三个重要的方法:dispatchTouchEvent(MotionEvent ev):用来进行事件的分发 onInterceptTouchEvent(MotionEvent ev):用来进行事件的拦截,在dispatchTouchEvent()中调用,需要注意的是View没有提供该方法 onTouchEvent(MotionEvent ev):用来处理点击事件,在dispatchTouch...原创 2019-02-15 17:17:16 · 173 阅读 · 0 评论 -
Android 本地广播
正常的广播是全局广播,所有的应用都可以接收到,如果我们用其发送一些数据,容易被其他应用获取,引起安全问题。其他应用也可以发送广播,被我们的应用接收,也可能导致安全问题。所以引入了本地广播机制 使用LocalBroadcastManager来管理广播:调用LocalBroadcastManager.getInstance()来获得实例 调用xx.registerReceiver()来注...原创 2019-02-28 17:15:29 · 194 阅读 · 0 评论 -
android与js之间的交互
简单介绍Webview的使用记得添加权限:<uses-permission android:name="android.permission.INTERNET"/>方法1:加载网络地址webView.loadUrl("https://www.baidu.com");方法2:加载本地网页写一段简单的html代码:<html><h1&...原创 2019-03-13 18:27:55 · 275 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 评论 -
AsyncTask 源码分析
异步任务可以在工作线程中完成数据处理,并在主线程总更新UI,其使用简单,这里不做介绍。我们从无参构造函数开始分析: public AsyncTask() { this((Looper) null); } /** 初始化了mHandler、mWorker、mFuture **/ public AsyncTask(@Nullable Loope...原创 2019-07-09 18:14:43 · 142 阅读 · 0 评论 -
android.dagger使用
以注入OkHttpClient为例:之前我们需要@Moduleclass OkhttpModule { @Provides fun okhttpProvider():OkHttpClient{ return OkHttpClient() }}@Component(modules = [OkhttpModule::class])inter...原创 2019-09-12 15:50:20 · 217 阅读 · 0 评论 -
ViewStub的使用
官方文档地址:https://developer.android.com/reference/android/view/ViewStub.html <ViewStub android:id="@+id/stub" android:inflatedId="@+id/subTree" android:layout="@...原创 2019-01-03 11:43:49 · 1128 阅读 · 0 评论 -
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 · 718 阅读 · 0 评论 -
IntentService的使用
IntentService启动的方式与Service相同,但在IntentServicezhon中会启动一个新线程来处理耗时操作从源代码中可以看出:public abstract class IntentService extends Service { public IntentService(String name) { super(); mNa...原创 2018-12-18 17:11:29 · 274 阅读 · 0 评论 -
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 阅读 · 0 评论 -
一些常用的Intent_ACTION以及属性
Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("vnd.android.cursor.item/phone"); startActivityForResult(intent, 0); 可以跳转到联系人界面 并且带回的Intent中带有原创 2016-07-04 18:12:07 · 948 阅读 · 0 评论 -
RxJava基本使用2
map变换操作符:将发送的数据按指定的函数去变化例子: Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception {原创 2018-01-03 15:10:36 · 225 阅读 · 0 评论 -
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 阅读 · 0 评论 -
synchronized 的简单总结
比如有一个Class MyClassMyClass A = new MyClass();MyClass B = new MyClass();实例化了两个对象A和B1.修饰方法,同步方法:MyClass类中有如下方法:private synchronized void say(){}若多个线程中,某一个线程正在执行A.say()时,另一个线程也执行到了A.say(原创 2017-03-28 18:16:45 · 363 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 阅读 · 0 评论 -
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 · 187 阅读 · 0 评论 -
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 阅读 · 0 评论 -
Android DataBinid在RecyclerView上应用
如果你不了解dataBinding,请看我的另一篇文章Activity布局文件如下,如果看过我的上一篇文章应该可以看懂这里的布局文件<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="...原创 2018-07-03 15:07:19 · 391 阅读 · 0 评论 -
Android常用跳转系统设置界面
android.provider.Settings。1. ACTION_ACCESSIBILITY_SETTINGS : // 跳转系统的辅助功能界面 Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivi...原创 2018-07-10 18:42:05 · 409 阅读 · 0 评论 -
IPC进程间通信:Messenger
新建service进程 <service android:name=".messenger.MessengerService" android:process=":remote" ></service> service代码如下public class MessengerService extends Ser...原创 2018-12-04 18:42:28 · 146 阅读 · 0 评论 -
IPC进程间通信:AIDL
上篇文章使用了Messenger来进行进程间通信,其本质也是使用AIDL。这次service端模拟一个图书馆,Activity模拟一位读者,读者可以查看图书馆中的图书列表,可以添加图书,当有新图书加入时通知读者(即添加Listener)添加新进程中的service <service android:name=".aidl.BookService"...原创 2018-12-11 18:06:43 · 185 阅读 · 0 评论 -
Android自定义控件中常见的方法
/** * onMeasure方法的作用时测量空间的大小 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {原创 2018-01-04 17:55:05 · 280 阅读 · 0 评论