Android基础
文章平均质量分 78
Boo_Wang
量变引起质变!
展开
-
Android长截屏-- ScrollView,ListView及RecyclerView截屏
Android 截屏,滚动截屏,ScrollView截屏,解决一屏盛不满情况下的截屏操作原创 2015-06-28 21:11:53 · 5313 阅读 · 11 评论 -
Android切面编程AOP之AspectJ的使用
概述AOP(Aspect Oriented Programming)面向切面编程。就是:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。使用场景针对很多地方都需要用到的模板代码,我们都可以用AOP来做,比如:日志、性能监控、埋点等。举个列子,很多时候我们需要根据当前网络情况做下一步操作,代码如下: public void checkNetworkNormal(){ if (NetworkUtils.isNetworkAvailable(th原创 2021-12-12 04:23:19 · 2616 阅读 · 0 评论 -
kotlin-android-extension 遭废弃,官方推荐使用ViewBinding
KT-42121As the @Parcelize functionality is extracted (KT-42120), the rest of the Android Extensions functionality can be deprecated in favour of View Binding.The existing Android Extensions plugin will continue to work, however, a warning message will b.原创 2021-10-05 21:04:06 · 664 阅读 · 0 评论 -
Android 6.0事件分发机制源码解析
概述一直以来看了很多关于Android中关于事件处理的文章,这一块是我们在自定义View 或ViewGroup中也非常重要,,碰巧今天看到一篇关于6.0的事件处理的文章,这里总结一下.Activity.dispatchTouchEvent我们知道在我们手指触摸屏幕的那一刻,最先处理事件的是我们的Activity,其源码如下 public boolean dispatchTouchEvent(M原创 2016-08-21 23:55:26 · 1110 阅读 · 0 评论 -
Android:Dagger2学习之由浅入深
概述Dagger2是一款使用在Java和Android上的静态的,运行时依赖注入框架.官方地址:http://google.github.io/dagger/记得当初刚学习Dagger2的时候看了许多博客,但是感觉上手依然困难,所谓光学不练就是这个意思吧时至今日,用上此框架的同仁越来越多.分析文章也很多,上手相对要简单了许多.学习Dagger2最先要明白的是其各个注解的含义及工作原理,这样才可以快速原创 2016-06-09 11:31:19 · 1296 阅读 · 0 评论 -
快速开发之Android Orm总结
概述在android平台上,常用的数据保存方式有Preference,文件和数据库,针对于数据库操作, 一般都会采用orm框架来解决问题,Android中使用比较广泛的Orm有LiteOrm,OrmLite,SugarORM,GreenDAO,ActiveAndroid,Realm等AndroidOrm使用的小demo:AndroidOrmLiteOrm这款和OrmLite不是一个东西,项目地址:原创 2016-06-14 08:11:30 · 1761 阅读 · 0 评论 -
Android 布局动画之LayoutAnimation与LayoutTransition
概述在Android的动画体系中,有补间动画,帧动画和属性动画,但是这些动画都是针对单个对象的,如果相对ViewGroup作动画,就要用到布局动画了LayoutAnimationLayoutAnimation 是API Level 1 就已经有的,LayoutAnimation是对于ViewGroup控件所有的child view的操作, 也就是说它是用来控制ViewGroup中所有的child原创 2016-09-11 12:21:24 · 2047 阅读 · 0 评论 -
Android动画之ViewAnimation和DrawableAnimation
概述继上一篇Android的LayoutAnimation,在Android中给单个View设置动画所用到的动画是视图动画(补间动画)相关APIViewAnimation 是Android 中最简单的动画,可以分为AlphaAnimation,RotateAnimation,ScaleAnimation,TranslateAnimation和AnimationSet,其中动画监听器为Animatio原创 2016-09-11 13:36:31 · 2358 阅读 · 0 评论 -
Android动画之PropertyAnimation;Interpolator;Evaluator与Keyframe
概述继上一篇,Android中的视图动画和帧动画可以实现大部分的Android中的动画需求,但是有一个缺点,就是其事件响应区域并没有发生变化,这时候出现了属性动画完全弥补了这个缺点属性动画结构可以看到Animator中主要包括AnimatorSet(动画集合),ValueAnimator,ObjectAnimator, 关于属性动画相关api,可以查看这里android.animation,监听原创 2016-09-11 23:42:21 · 1127 阅读 · 0 评论 -
Android DialogFragment实现底部弹出菜单效果
底部弹出式菜单,可以使用PopupWindow 来做,也可以用自定义View来做。当然这里采用DialogFragment来做。DialogFragment是3.0之后引入的,使用DialogFragment,我们不用管理其生命周期,并且可以作为组件重用。比如当屏幕旋转的时候,如果PopupWindow没有dismiss掉,会抛出异常。AlertDialog则会消失,DialogFragment创建原创 2016-01-12 22:46:50 · 15864 阅读 · 1 评论 -
ContentProvider总结及Loader的使用
ContentProvider(内容提供者)是Android中的四大组件之一。主要用于程序间数据的共享(IPC的一种).它提供了一套完整的机制,允许一个程序访问另一个应用程序,并且保证数据的安全性.我们知道在Android中常见的数据存储方式有sharedpreferences,文件和数据库等,但是数据的访问方式会因为存储方式的不同而不同.而且这些数据只能在应用内使用,而ContentProvider允许原创 2016-03-23 07:36:35 · 1090 阅读 · 0 评论 -
Android WebView使用,Http/Https,硬件加速等相关细节详解
##概述在应用的开发过程中,经常遇到需要经常变化的页面,一般针对这种页面,我们会用`WebView`来实现.如隐私条款等等.并且随着 `hybrid` 的兴起,`webview` 将会更加常用.原创 2015-12-08 23:14:09 · 3829 阅读 · 1 评论 -
Android 布局填充器之LayoutInflater必知细节
Android中布局填充器LayoutInflater使用注意事项原创 2015-12-05 21:23:04 · 1651 阅读 · 0 评论 -
Android RecyclerView相关总结及ItemTouchHelper的使用
## 概述`RecyclerView`出来已经很长时间了,关于其的介绍也非常的多.作为`ListView`的升级版,它更加强大和灵活.可以轻松的实现各种布局和动画,见其名,知其意.`RecyclerView`用于在有限窗口中展示大量数据集合的可复用的视图.这里主要梳理一下`Recyclerview`的常用方法,示例Demo:[BoBoMEe/AndroidDev](https://github.com原创 2015-12-31 20:06:14 · 911 阅读 · 0 评论 -
Android hybrid之JS与Native的通信方式
Android Hybrid App中Js与Native通信的几种方式原创 2015-12-09 23:48:55 · 1488 阅读 · 0 评论 -
Android MVVM 之DataBinding,BindingAdapter及component
简介DataBinding是MVVM在Android上的一种实现,支持双向绑定,自动刷新。是ButterKnife等APT框架的有效替代方案。基本用法DataBindingUtil生成实例,会有一定的规则,layout通过文件名生成,View通过id生成,不需要 findViewById。自定义类名,通过自定义类名,这样就可以避开上面的规则<data class="CustomBinding"></原创 2016-12-14 14:14:16 · 6405 阅读 · 0 评论 -
使用观察者模式完美解决activity与fragment通信问题
概述通常来说,解决activity和fragment通信的问题。我们都是采用如下几种方式, handler,广播,EvnetBus,接口等。那么有没有一种更好的方式来实现呢,最近项目一只在使用Rx,这里参照了一下Rx的设计来解决如上问题。先来说说常用的几种方式。handler方式这是一种最不好的初级方式,在fragment中调用activity中的handler发送信息,activity处理信息。原创 2016-06-05 08:31:29 · 6675 阅读 · 6 评论 -
Retrofit2.0使用总结及注意事项
概述Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,网络服务基于OkHttp 。 变化如果之前使用过Retrofit1,会有一些变化, 比如创建方式,拦截器,RxJava支持等,在Retrofit1中使用的是RestAdapter,而Retrofit2中使用的Retrofit实例。interceptor,OKHttp通过interceptor原创 2016-05-12 00:13:25 · 30166 阅读 · 8 评论 -
Android 序列化之Serializable和Parcelable
## Serializable作用> 只要一个类实现了`java.io.Serializable`接口,那么它就可以被序列化.## 序列化 ID > ID 相同,两个类就可以相互序列化和反序列化。建议用默认的 1L## 静态变量序列化> 静态变量不参与序列化(`序列化保存的是对象的状态,静态变量属于类的状态`)## 父类的序列化> 子类序列化(实现了`Serializable`),父类也要原创 2017-02-15 22:52:49 · 568 阅读 · 0 评论 -
android 控件各种颜色的半透明效果配置
格式: Android:background=”#XXxxxxxx”(颜色可以写在color中) 说明:半透明颜色值不同于平时使用的颜色,半透明颜色值共8位,前2位是透明度,后6位是颜色。 也就是说透明度和颜色结合就可以写出各种颜色的透明度。下面是透明度说明表,供大家参考。 透明度 比值 颜色代码 不透明 100% FF 95% F2 90%转载 2017-07-25 17:24:09 · 628 阅读 · 0 评论 -
Android 多媒体之MediaStore
概述MediaStore是android系统提供的一个多媒体数据库,专门用于存放多媒体信息的,通过ContentResolver即可对数据库进行操作。如下是其结构:结构图解:MediaStore.Files: 共享的文件,包括多媒体和非多媒体信息MediaStore.Audio: 存放音频信息MediaStore.Image: 存放图片信息MediaStore.Vedio: 存放视频信息每个内原创 2017-04-23 20:30:24 · 7617 阅读 · 0 评论 -
Android仿微博@好友,#话题#及links处理方案
概述TextView 的 ClickableSpan 有两个坑:一、默认情况下,点击 ClickableSpan 的文本时会同时触发绑定在 TextView 的监听事件; 二、默认情况下,点击 ClickableSpan 的文本之外的文本时,TextView 会消费该事件,而不会传递给父 View;解决办法 我在Android开发中遇到的坑之微博正文点击处理参考: TextView Cli原创 2017-03-27 00:47:37 · 7327 阅读 · 7 评论 -
Android中的ART和Dalvik对比
概述之前也一直零零散散的看过Android运行时与Dalvik,但是都没有没有总结成文字,这里总结一下几篇相关博客中的介绍。维基百科:Dalvik虚拟机 维基百科:Android Runtime Dalvik 是一个执行dex文件的Java虚拟机 而ART指提供一套完全与Java虚拟机兼容的接口,因此可以在4.4之后无缝将Dalvik替换成ART,这里可以查看:Android ART运行原创 2017-02-19 14:16:54 · 5599 阅读 · 0 评论 -
开发艺术探索--Activity生命周期和启动模式
第一章: Activity生命周期和启动模式本章包括: 声明周期,启动模式及IntentFilter的匹配规则. 生命周期 启动模式 IntentFilter生命周期 典型情况下: 用户参与下,生命周期的改变 异常情况下: 被系统回收或者Configuration改变重建典型情况下 当用户按下Home后回来:onPause -> on...原创 2016-10-04 17:26:26 · 888 阅读 · 0 评论 -
Retrofit2使用CallAdapterFactory的错误处理
## 概述在使用Retrofit1的时候有一个类叫`ErrorHandler`,可以方便的定义自己的异常处理,但是在`Retrofit2`中是没有这个类的,详情见讨论:[How do we create ErrorHandler in retrofit 2.0? #1102](https://github.com/square/retrofit/issues/1102)转载 2016-07-27 22:28:23 · 4121 阅读 · 4 评论 -
WebView 细节,onShowCustomView与JS注入来实现视频全屏播放
概述WebView是开发中经常使用的组件,在使用中我们需要考虑 文件下载,自定义scheme,重定向,硬件加速,Cookie,HTTPS/HTTP混合等多种问题。关于 WebView 之前的总结 Android WebView使用,Http/Https,硬件加速等相关细节详解Android hybrid之JS与Native的通信方式更多参考: Android Webview实现文件下载功能原创 2017-01-21 11:50:32 · 10888 阅读 · 0 评论 -
EditText 背景,光标着色及其原理解析
## 概述看到 [Android Weekly](http://androidweekly.net/) 最新一期有一篇文章:[Tinting drawables](http://andraskindler.com/blog/2015/tinting_drawables/),使用 `ColorFilter` 手动打造了一个 `TintBitmapDrawable`,之前也看到有些文章使用这种方式来实现 `Drawa转载 2016-01-28 23:43:41 · 1980 阅读 · 0 评论 -
Android Studio之NDK,JNI开发初体验
概述JNI(JavaNative Interface)是由Java语言提供的供Java和C/C++相互通信的机制,就是Java与C/C++的互调 NDK(Native Development Kit):本地开发工具集,用于快速开发C/C++的动态库.so文件,并和java一起打包到Apk. 使用NDK,是基于一下原因, 1. 使用C/C++成熟的类库,而不需要重复造轮子 2. C/C++执行原创 2016-10-02 23:49:06 · 653 阅读 · 0 评论 -
开发艺术探索--Android的View事件体系
第三章,View事件体系 View的位置参数 MotionEvent,TouchSlop,VelocityTracker,GestureDetector,Scroller View的滑动方式View参数View的四个基本属性lef = getLeft();top = getTop();bottom = getbottom();right = getRight();其中参数都是相对于原创 2016-10-04 20:38:49 · 818 阅读 · 0 评论 -
图片加载之Glide使用总结
相关方法with():指定了声明周期load():加载资源,String/Uri/File/Integer/URL/byte[]/T,或者 loadFromMediaStore(Uri uri)placeholder(resourceId/drawable): 设置资源加载过程中的占位Drawable。error():load失败时显示的Drawable。crossFade()/cross原创 2016-04-25 07:39:03 · 25232 阅读 · 0 评论 -
Android 5.0之上可用动画总结
触觉反馈在视图范围内展示波纹效果 android:background="?android:attr/selectableItemBackground"波纹在接触点开始,之后填充整个视图背景 android:background="?android:attr/selectableItemBackgroundBorderless"View Property AnimatorAPI>12引入,并原创 2016-10-27 00:29:14 · 2579 阅读 · 0 评论 -
Android自定义控件绘制流程与Paint, Canvas相关API
概述在开发过程中,当系统提供的控件不能满足我们的需求的时候,通常都会采用自定义控件来完成,自定义控件的一般流程:attrs.xml–>onMeasure()–>onLayout(ViewGroup)–>onDraw()–>onTouchEvent()–>onInterceptTouchEvent(ViewGroup);其中带有ViewGroup的是自定义ViewGroup需要用到的方法. 自定义属原创 2016-06-26 07:31:05 · 1018 阅读 · 0 评论 -
Gradle构建工具基础
概述常用构建工具:ANT,Maven,GradleANT,Maven是用 XML 来编写的。确定是没有类似 if{某条件成立,编译某文件}/else{编译其他文件} 来按条件执行任务。Gradle是一个领域专用语言(DSL),使用Groovy,Groovy 基于 Java 并拓展了 Java。内部会编译为Java class 并自动执行。Groovy 语法和 java类似,注释支持支持//或者/原创 2016-03-25 08:09:38 · 457 阅读 · 0 评论 -
Android 6.0适配的几个重要方面
一 . 运行时权限检查(Runtime Permisssions)`Android 6.0`版本上的运行时权限管理,当App的`targetSdkVersion>=23`的时候,需要用`checkSelfPermission()`用来检测App是否被授予了权限可以用`requestPermissions()`用来请求权限同时可以使用`shouldShowRequestPermissionRat原创 2016-02-18 17:26:22 · 2874 阅读 · 1 评论 -
Retrofit+RxJava错误预处理
概述在使用 RxJava+Retrofit 结合的网络框架时,为了避免打破流式调用 和 过于繁杂的 Subscribe 代码 我们做了很多的尝试,比如 自定义操作符,自定义Transformer,泛型处理,和 自定义 Subscriber等错误和异常举例比如,在服务器返回数据中,假设服务器遵循规范,请求体 一般类似下面这种,{ "success": false, // 是否成功 "原创 2016-08-01 00:30:18 · 8080 阅读 · 13 评论 -
Rxjava+Retrofit结合使用时的开发技巧
## 概述在开发中使用`RxJava+Retrofit`的网络框架,是时下的趋势,使用起来也非常的方便.如果能够在一定程度上进一步封装,能够大大提高我们的开发效率.原创 2016-06-24 23:46:32 · 983 阅读 · 2 评论 -
Android FlexboxLayout使用体验
概述FlexboxLayout是Google新推出的针对流式布局的控件, 记得之前有流式布局的需求时,都是使用的blazsolar/FlowLayout,或者hongyangAndroid/FlowLayout, 后两种实现方式都差不多,都是通过自定义ViewGroup来达到效果.相关实现Android TagFlowLayout完全解析 一款针对Tag的布局 Google发布flexbox-原创 2016-08-07 18:06:08 · 881 阅读 · 6 评论 -
Android变色状态栏的实现
概述android 自4.4之后,开始支持半透明状态栏效果。 一般都是将布局延伸到状态栏下,并且保持和toolbar颜色一致,就是我们所说的变色状态栏。比如我们经常用到的网易云音乐的状态栏处理 和 miui内置应用的状态栏处理都采用了这种方式,如下: 实现参考:Android 沉浸式状态栏攻略 让你的状态栏变色吧关于变色状态栏的实现也非常的多,主要都是通过 4.4 之上的theme和fitsSy原创 2016-02-20 17:48:27 · 1147 阅读 · 0 评论 -
Gradle多渠道多环境打包自动重命名
概述在android开发中,公司经常会模拟出几套环境,ps,测试环境、准生产环境、发布环境等,同时 Android 市场繁多,为了方便后期数据分析,在发布的时候还要添加一个渠道统计,一般会用到友盟统计,这就给我们的打包带来了麻烦。gradle好在android studio的cradle脚本十分强大,给我们的构建带来了方便。首先,我们定义一个配置文件,方便后面管理 gradle.propertie原创 2016-02-16 21:33:16 · 4974 阅读 · 0 评论 -
关于Android中的Handler 机制
参考文章: 深入理解Handler机制Android 事件机制详解Android Handler消息机制的理解android的消息处理机制(图+源码分析)——Looper,Handler,Message概述在开发中,Handler通常用于异步消息处理,相关联的类有:ThreadLocal、Looper、MessageQueue、Message、Handler.Handler持有MessageQue原创 2016-02-16 15:37:53 · 594 阅读 · 0 评论