Coder Social home page Coder Social logo

crazyqiang / androidstudy Goto Github PK

View Code? Open in Web Editor NEW
2.0K 39.0 465.0 15.17 MB

🔥 Android学习知识点总结 Jetpack、MVVM、MVI、Kotlin、ViewPager2、JUC多线程等,欢迎star!

Home Page: http://blog.csdn.net/u013700502

Java 50.45% Groovy 0.76% AIDL 0.27% Kotlin 48.52%
android jetpack mvvm gradle kotlin-dsl thread handlerthread jetpack-mvvm jetpack-viewmodel jetpack-livedata jetpack-lifecycle juc-multithread jetpack-datastore androidx-viewpager2 dialogfragment dialog banner

androidstudy's Introduction

1、扫码关注

欢迎扫描下方二维或搜索微信公众号 代码说 关注我的微信公众号查看最新文章,期待您的关注~

  • 扫描二维码下载APK示例

apk 或者 点击此处链接下载APK

2、更新日志

更新日志 备注
lib_dialog NOTE: dialog库已迁移到maven仓库,引入方式:
implementation 'io.github.mqcodedev:lib_dialog:1.3.0'
别忘了在根目录下的build.gradle中声明 mavenCentral(),现在新建项目默认会自动引入

Jcenter引入方式:
implementation 'com.ninetripods:lib-dialog:1.1.0'
未来Jcenter不允许更新版本,墙裂建议使用maven方式引入

版本改动说明:Dialog库README文档
Blog地址:Android基于DialogFragment封装一个通用的Dialog
lib_viewpager2 基于ViewPager2实现的自动(手动)无限轮播,支持自定义ItemView及转场动画等
引入方式:
implementation 'io.github.mqcodedev:lib_mvpager2:1.0.0-rc3'

使用说明:MVPager2库README文档
Blog地址:
1、深入理解ViewPager2原理及其实践(上篇)
2、深入理解ViewPager2原理及其实践(下篇)
3、Android仿淘宝、京东Banner滑动查看图文详情
基本使用:


仿淘宝搜索栏上下轮播:


仿淘宝、京东Banner滑动查看图文详情:

3、Blog发布

系列 备注
Jetpack 1、Lifecycle: Android Jetpack系列之Lifecycle
2、LiveData :Android Jetpack系列之LiveData
3、ViewModel:Android Jetpack系列之ViewModel
4、LiveDataBus:Android基于LiveData实现消息总线
5、Jetpack MVVM:Android Jetpack系列之MVVM使用及封装Android Jetpack系列之MVVM使用及封装(续)
6、Jetpack MVI: Android Jetpack系列之MVI架构
7、DataStore:Android Jetpack系列之DataStore
Kotlin 1、Kotlin | 内联函数inline、noinline、crossinline
2、Kotlin Flow数据流Kotlin Flow数据流的几种使用场景
3、Kotlin Flow实现一个倒计时功能
4、Kotlin 作用域函数之let、with、run、also、apply的使用
5、Kotlin 常用Collection集合操作
6、Kotlin 中正确的使用Handler
7、Kotlin 之@JvmOverloads、@JvmStatic、@JvmField、@JvmInline等注解使用总结
8、Kotlin data数据类、copy()函数、sealed密封类
9、Kotlin 深入理解协程
10、Kotlin 使用vararg可变参数
11、Kotlin 理解泛型
Gradle 1、Gradle理论与实践一:Gradle入门
2、Gradle理论与实践二:Groovy介绍
3、Gradle理论与实践三:Gradle构建脚本基础
4、Gradle理论与实践四:自定义Gradle插件
5、Gradle配置中subprojects和allprojects的区别
6、添加buid.gradle配置信息,支持多渠道打包
多线程 Java & Android:
1、Android多线程之HandlerThread
2、Android多线程之IntentService
3、Android中Callable、Future、FutureTask的概念以及几种线程池的使用
4、Android异步消息处理机制之Handler、Looper、Message
5、Java多线程之ThreadLocal的使用及源码解析
6、Java线程基础知识点
7、JUC系列学习:AbstractQueuedSynchronizer同步器框架及相关实现类
8、JUC系列学习:线程池Executor框架及其实现ThreadPoolExecutor
9、JUC系列学习:阻塞队列BlockingQueue介绍及其相关实现ArrayBlockingQueue、LinkedBlockingQueue等的使用及源码分析
10、JUC系列学习:CountDownLatch、Semaphore、CyclicBarrier的使用及源码解析
11、JUC系列学习:ReentrantLock的使用、源码解析及与Synchronized的异同
12、JUC系列学习:ReentrantReadWriteLock的使用及源码解析
13、Java生产者、消费者模式的几种实现方式
14、Java多个线程顺序循环执行的几种实现方式
深入理解系列 1、Android深入理解View.post()获取宽高及其Window加载View原理
2、Android深入理解RecyclerView的缓存机制
Android存储 1、Android本地存储之SharedPreferences源码解析
2、DataStore:Android Jetpack系列之DataStore
3、Android内存缓存LruCache源码解析
4、Android使用磁盘缓存DiskLruCache
5、Android使用LruCache、DiskLruCache实现图片缓存+图片瀑布流
6、Android本地存储的几种方式
7、Android数据库Sqlite的基本用法及升级策略
Android View相关 自定义View相关
1、Android自定义View中的常用方法(距离、位置、点击事件)
2、Android View滑动相关的基础知识点
3、Android自定义View工具:Paint&Canvas(一)
4、Android自定义View工具:Paint&Canvas(二)
5、Android Canvas之Path操作
RecyclerView相关
1、Android深入理解RecyclerView的缓存机制
2、转载:RecyclerView onAttachedToWindow、onDetachedFromWindow、onViewRecycled等执行时机
3、Android使用RecycleView实现魅族手机通讯录界面
4、Android仿QQ侧滑菜单
5、Android高仿QQ小红点
6、深入理解ViewPager2原理及其实践(上篇)
7、深入理解ViewPager2原理及其实践(下篇)
View相关
1、Android ViewTreeObserver使用总结及获得View宽高的几种方法
动画相关
1、Android 补间动画及动画组合AnimationSet常用方法整理
字节码插桩 1、自定义Annotation注解及解析
2、Android 采用AOP方式封装6.0权限管理-待升级
弹窗相关 1、Android基于DialogFragment封装一个通用的Dialog
2、Android封装一个通用的PopupWindow
3、Android使用WindowManger实现桌面悬浮窗
数据结构&算法 1、Java内存结构 & GC回收
其他知识点 1、Android嵌套滑动的分析与实践
2、startActivityForResult被标记为废弃?Activity Result API闪亮登场!

4、效果展示

系列 备注
自定义View、ViewGroup

androidstudy's People

Contributors

crazyqiang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidstudy's Issues

bug

private final Handler mHandler = new Handler(Looper.getMainLooper()) {
@OverRide
public void handleMessage(Message msg) {
switch (msg.what) {
case APPLE_INFO:
Apple apple = (Apple) msg.obj;
//观察者模式,通知所有客户端
final int clientNum = mCallbacks.beginBroadcast();
for (int i = 0; i < clientNum; i++) {
IRemoteServiceCallBack callBack = mCallbacks.getBroadcastItem(i);
if (callBack != null && apple != null) {
try {
callBack.noticeAppleInfo(apple);
} catch (RemoteException e) {
e.printStackTrace();
}
}
mCallbacks.finishBroadcast();
}
break;
}
super.handleMessage(msg);
}
mCallbacks.finishBroadcast();应该放到for循环后面,不然通知一个就结束了

CommonUtil没提供

CommonUtil.measureWidthAndHeight方法,具体实现是什么呢?我想试试你的idea,谢谢

使用SYDialog屏幕旋转问题

SYDialog创建并show之后,如果此时屏幕旋转,那么Dialog将会消失,留下一层阴影。
我在所属的Activity配置节点中加入如下参数:
android:configChanges="keyboardHidden|orientation|screenSize"

屏幕旋转,Dialog会保持,但是如果是横屏状态show dialog之后,屏幕旋转为竖屏,Dialog窗口不会重绘,导致窗口溢出。

Screenshot_2020-01-09-21-06-16-781_com ysh loading

如图所示,虽然这个问题基本上可以说不是问题,因为没有人会没事拿着手机转来转去,但是还想想看看大佬怎么解决的😁

如何去掉弹窗上部分阴影,下部分阴影保留?

 private void startPopu(View v) {
        if (popupWindow != null && popupWindow.isShowing())
            return;
        popupWindow = new CommonPopupWindow.Builder(SearchActivity.this)
                .setView(R.layout.popu_more_car_type)
                .setWidthAndHeight(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
                .setBackGroundLevel(0.7f)//取值范围0.0f-1.0f 值越小越暗
                .setAnimationStyle(R.style.AnimDown)
                .setViewOnclickListener(this)
                .create();
        popupWindow.showAsDropDown(v);

    }

图片:http://bmob-cdn-16268.b0.upaiyun.com/2019/01/29/697b63eb40e1e61180f914566d12e769.png

关于使用SYDialog的内存泄漏问题

image
new SYDialog.Builder(context)
.setDialogView(R.layout.dialog_garbage_details)
//设置动画
.setAnimStyle(R.style.AnimUp)
//设置屏幕宽度比例
.setScreenWidthP(1.0f)
//设置屏幕高度比例
.setScreenHeightP(1.0f)
//设置背景透明度
.setWindowBackgroundP(0.5f)
//设置是否屏蔽物理返回键 true不屏蔽 false屏蔽
.setCancelable(true)
//设置dialog外点击是否可以让dialog消失
.setCancelableOutSide(true)
.setBuildChildListener((dialog, view, layoutRes) -> initView(dialog, view))
.setOnDismissListener(dialog -> GarbageDetailsDialog.this.context = null)
.show();

写了 GarbageDetailsDialog.this.context = null 还是有内存泄漏

BaseMvvmActivity中mViewModel的初始化

请问,MvvmExampleActivity的WanViewModel在BaseMvvmActivity初始化了?这样多个Activity的viewmodel都在此的话,对所有Activity都可见了?
如果不在BaseMvvmActivity初始化的话registerEvent方法 mViewModel.errorFlow又没办法统一在BaseMvvmActivity中处理,怎么处理比较好呢?
作者可以写个示例吗,期待您的回复

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.