- 博客(57)
- 资源 (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 235
原创 Android组件化中拆分出Fragment单独运行
项目中的MainActivity是tablayout+viewpager组成,将各个模块拆分出来,因为由viewpager,所以各个模块展示是以Fragment为主。拆分出来后,单独的module是可以运行的,而Fragment是不能直接展示的,简单一点也需要一个Activity作为载体,而这个Activity又不能在整体打包时添加到项目中。需要的解决问题:1.独立运行时,需要一个Ac...
2020-04-14 14:07:04 912
原创 记录自己工作中奇怪的心态
1.出现问题后,很急躁。其实越急躁反而更容易出问题,适当的离开当前环境,出去抽支烟,稳定自己的心态,更加有利于问题的解决。2.需要沉下心做事。有时候需要强迫自己做一些事,才会发现其中的乐趣。千万要沉下心来!!3.少一些抱怨。抱怨解决不了任何问题,尤其是向你工作中身边的人抱怨。4.有时候更需要一些胆量。有时候能吹牛皮也是一种能力,很多人接到未曾接触过得工作时,都眼前一抹黑,但是还是要接受挑...
2020-02-19 17:09:41 206
原创 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 2016 2
原创 android.dagger使用
以注入OkHttpClient为例:之前我们需要@Moduleclass OkhttpModule { @Provides fun okhttpProvider():OkHttpClient{ return OkHttpClient() }}@Component(modules = [OkhttpModule::class])inter...
2019-09-12 15:50:20 272
原创 AsyncTask 源码分析
异步任务可以在工作线程中完成数据处理,并在主线程总更新UI,其使用简单,这里不做介绍。我们从无参构造函数开始分析: public AsyncTask() { this((Looper) null); } /** 初始化了mHandler、mWorker、mFuture **/ public AsyncTask(@Nullable Loope...
2019-07-09 18:14:43 171
原创 Android热修复原理及实现
原理:1、PathClassLoader只能加载系统中已经安装过的apk2、DexClassLoader可以加载jar/apk/dex,可以从SD卡中加载未安装的apk可以在Activity中打印 this.getClassLoader().toString() 输出就为dalvik.system.PathClassLoader。查看下PathClassLoader源码,其基本都是...
2019-04-26 12:01:19 363
原创 Retrofit缓存
有网络直接从网络请求数据,没有网络则从缓存读取数据。请求接口文件如下public interface MyApi { @GET("/") Call<String> getTest();}baseurl为http://www.appchina.com/1.拦截器如下: private Interceptor interceptor = n...
2019-04-18 15:51:24 994 1
原创 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 333
原创 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 2304
原创 Android 本地广播
正常的广播是全局广播,所有的应用都可以接收到,如果我们用其发送一些数据,容易被其他应用获取,引起安全问题。其他应用也可以发送广播,被我们的应用接收,也可能导致安全问题。所以引入了本地广播机制 使用LocalBroadcastManager来管理广播:调用LocalBroadcastManager.getInstance()来获得实例 调用xx.registerReceiver()来注...
2019-02-28 17:15:29 219
原创 Android View的点击事件分发机制
三个重要的方法:dispatchTouchEvent(MotionEvent ev):用来进行事件的分发 onInterceptTouchEvent(MotionEvent ev):用来进行事件的拦截,在dispatchTouchEvent()中调用,需要注意的是View没有提供该方法 onTouchEvent(MotionEvent ev):用来处理点击事件,在dispatchTouch...
2019-02-15 17:17:16 198
原创 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 771
原创 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 1185
原创 IntentService的使用
IntentService启动的方式与Service相同,但在IntentServicezhon中会启动一个新线程来处理耗时操作从源代码中可以看出:public abstract class IntentService extends Service { public IntentService(String name) { super(); mNa...
2018-12-18 17:11:29 305
原创 使用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 277
原创 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 237
原创 JAVA多线程 join()方法
有时子线程中会做大量耗时运算,而主线程可能结束可能早于子线程,我们希望子线程结束后主线程再结束,我们就可使用join方法例如原来的代码是这样的:public class Main6 { public static void main(String[] args) { Thread6 thread6 = new Thread6(); thread6....
2018-12-13 14:43:38 150
原创 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 147
原创 IPC进程间通信:AIDL
上篇文章使用了Messenger来进行进程间通信,其本质也是使用AIDL。这次service端模拟一个图书馆,Activity模拟一位读者,读者可以查看图书馆中的图书列表,可以添加图书,当有新图书加入时通知读者(即添加Listener)添加新进程中的service <service android:name=".aidl.BookService"...
2018-12-11 18:06:43 214
原创 IPC进程间通信:Messenger
新建service进程 <service android:name=".messenger.MessengerService" android:process=":remote" ></service> service代码如下public class MessengerService extends Ser...
2018-12-04 18:42:28 168
原创 Android常用跳转系统设置界面
android.provider.Settings。1. ACTION_ACCESSIBILITY_SETTINGS : // 跳转系统的辅助功能界面 Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivi...
2018-07-10 18:42:05 447
原创 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 420
原创 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 353
原创 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 212
原创 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 239
原创 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 336
原创 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 821
原创 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 782
原创 Android自定义控件中常见的方法
/** * onMeasure方法的作用时测量空间的大小 * @param widthMeasureSpec * @param heightMeasureSpec */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
2018-01-04 17:55:05 306
原创 RxJava基本使用2
map变换操作符:将发送的数据按指定的函数去变化例子: Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception {
2018-01-03 15:10:36 256
原创 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 424
原创 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 4741
原创 解决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 440
原创 Maven打包war
org.apache.maven.plugins maven-war-plugin 2.4 WebRoot WebRoot下的文件会被直接复制进war包。在target目录下会生成war文件,直接复
2017-04-20 14:58:15 272
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人