
android进阶
文章平均质量分 60
NO Exception?
分享内容!
展开
-
Android 9.0 wifi 热点 汇总
最近调研需要开发Android 9.0的WiFi 热点,要求能够打开和关闭热点,及获取热点信息(名称和密码)。但是热点模块属于系统级api,第三方应用无法直接获取,还好app可以为系统级应用,可以直接获取api来执行,但是如果不是系统级应用,需要通过反射来处理。原创 2022-10-14 14:20:23 · 1984 阅读 · 4 评论 -
关于Android shader 着色器
1.shader在绘图过程中,着色器是返回颜色水平范围的对象的基类。在paint中调用setShader(shader)方法设置一个shader的子类 , 之后任何对象(位图除外)使用该颜料绘制的颜色将从着色器中获取。/** * Shader is the base class for objects that return horizontal spans of colors * during drawing. A subclass of Shader is installed in a Pai原创 2022-05-17 15:11:18 · 764 阅读 · 0 评论 -
实现骨架shimmer 的加载效果
前几日要做一个加载的进度条样式,如图。gif的效果一般,再说明一下底色是蓝色,左到右边是渐变色,浅蓝到深蓝。在这基础之上,会有一个白色透明模块,不断划过蓝色区域,形成一种加载的动效。这种动画也叫骨架动效。facebook有个框架叫shimmer.大家github搜索。这里面涉及几个点:1.渐变的背景色这个效果简单,之前给view设置背景即可<com.lll.testshimmer.TestView android:layout_width="match_parent" an.原创 2022-05-17 11:52:20 · 421 阅读 · 0 评论 -
AIDL beginBroadcast() called while already in a broadcast问题分析及源码解析
在写aidl 逻辑的时候遇到了beginBroadcast() called while already in a broadcast 意思是已经在广播中调用了源码: public int beginBroadcast() { synchronized (mCallbacks) { if (mBroadcastCount > 0) { throw new IllegalStateException(原创 2022-05-01 15:03:42 · 2431 阅读 · 0 评论 -
android 悬浮窗的检查
1、判断悬浮窗是否打开if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { val canDrawOverlays = Settings.canDrawOverlays(this) Log.d(TAG, "onCreate:canDrawOverlays=$canDrawOverlays ") findViewById<TextView>(R.id.status)原创 2022-01-11 19:10:05 · 5422 阅读 · 1 评论 -
windowsManager介绍
8. windowsManagerWindow是 一个抽象类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成。WindowManager是外界访问Window的入口,Window的具体实现位于 WindowManagerService中,WindowManager和Window-ManagerService的交互是一个IPC过程。Android中所有的视图都是通过Window来呈现的,不管是Activity、Dialog还是Toast,原创 2022-01-11 16:17:49 · 4622 阅读 · 0 评论 -
Android音频焦点
Android音频焦点两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术,但却会给用户带来很大的困扰。为了避免所有音乐应用同时播放,Android 引入了“音频焦点”的概念。 一次只能有一个应用获得音频焦点。当您的应用需要输出音频时,它需要请求获得音频焦点,获得焦点后,就可以播放声音了。不过,在您获得音频焦点后,您可能无法将其一直持有到播放完成。其他应用可以请求焦点,从而占有您持有的音频焦点。如果发生这种情况,您的应用应暂停播放或降低音原创 2022-01-10 15:18:00 · 3877 阅读 · 0 评论 -
Android 自定义view 实现红点显示数量
开发当中,很多地方都需要红点气泡,红点内部显示数量思路:1.自定义view,先绘制一个圆形,在绘制一个text文本内容2.根据view的宽高,去最小值,因为圆形的特点,必须具备正方形区域才能绘制圆形,所以在宽高当中取最小值来绘制圆形3.内部的text,居中显示,文本的默认显示方法是基于文本的左下角为基点,所以为了让文本居中,要计算偏移量。4.如何进行偏移呢?先说X轴,只有知道了文本的宽度,向左偏移一半距离,就可以了同理,Y轴也是这样的逻辑,向下偏移一半距离,就可以居中了。val rect原创 2021-12-22 19:21:32 · 1983 阅读 · 0 评论 -
SpannableString使用
1.SpannableStringThis is the class for text whose content is immutable but to which markup objects can be attached and detached. For mutable text, see SpannableStringBuilder.一个内容不可变但可以添加和分离标记对象的文本的类。 对于可变文本,请参阅 SpannableStringBuilder。SpannableString是一个可原创 2021-12-21 19:45:06 · 156 阅读 · 0 评论 -
textview固定宽度,自动调整字体大小
fun setTextAutoSize(textView: TextView, text: String) { //设置textView固定宽度 val layoutParams = textView.layoutParams layoutParams.width = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 30f, .原创 2021-12-21 17:18:07 · 812 阅读 · 0 评论 -
ViewPager2 简单使用
1.viewpager2概念及特点ViewPager2 是 ViewPager 库的改进版本,可提供增强型功能并解决使用 ViewPager 时遇到的一些常见问题。1.1 ViewPager2 的优势垂直方向支持除了支持传统的水平分页之外,ViewPager2 还支持垂直分页。您可以通过设置 ViewPager2 元素的 android:orientation 属性为其启用垂直分页:<androidx.viewpager2.widget.ViewPager2 xmlns:原创 2021-09-13 22:26:48 · 1622 阅读 · 0 评论 -
Android 单元测试
1.概念测试应用 通过持续对应用运行测试,您可以在公开发布应用之前验证其正确性、功能行为和易用性快速获得故障反馈。在开发周期中尽早进行故障检测。更安全的代码重构,让您可以优化代码而不必担心回归。稳定的开发速度,帮助您最大限度地减轻技术负担2.测试基础知识2.1 配置测试环境Android Studio 中的典型项目包含两个用于放置测试的目录androidTest 目录应包含在真实或虚拟设备上运行的测试。此类测试包括集成测试、端到端测试,以及仅靠 JVM 无法完成应用功原创 2021-09-01 20:16:36 · 366 阅读 · 0 评论 -
loading加载组件封装
很多的页面都需要加载进度的弹窗。要好用,简单,使用场景兼容性好。1.原理每个页面主题内容都基于根布局来呈现layout的,所以我们为了实现对页面内容尽量避免侵入性,在根布局再添加一个loading的layout,这样loadingLayout和内容layout重叠,通过控制显示隐藏来达到效果。2.使用Activity使用 //oncreate noBoLoadingManager = new NoBoLoadingManager(this); //加载数据前 noBoL原创 2021-08-26 18:02:44 · 443 阅读 · 0 评论 -
实现快速选择的城市列表组件-字母索引
1.背景项目有时候需要选择城市,来跳转到不同的业务逻辑中。所以有必要对各个业务线提供一个公共的组件。2.思路很多时候,城市列表有几块逻辑,城市列表,热门城市,当前城市,甚至历史记录。但是具体什么模块,又不清楚业务需要。所以需要抽取。1.整个列表多为多布局存在,但是这里不是普通的多布局,是经过包装适配器的形式来做的。2.内容的处理,如当前位置是一个特别的布局结构,所以作为一个单独的布局,剩下的就和列表类似,所以可以作为普通的布局结构,只是需要区分数据的类别而已。3.忽略每个条目内部城市的排列形式原创 2021-08-24 20:17:07 · 604 阅读 · 0 评论 -
Dagger2 2.38 简单使用
1.概念dagger2 主要用于解决复杂项目的对象依赖关系。也叫依赖注入,如:butterKnife 也属于依赖注入。1.编译时生产 各个对象的类,通过工厂式封装的形式关联对象之间的依赖关系2.使用注解形式,简单2.使用 implementation 'com.google.dagger:dagger:2.38' annotationProcessor 'com.google.dagger:dagger-compiler:2.38'public class User { S原创 2021-08-04 11:52:35 · 225 阅读 · 0 评论 -
CoordinatorLayout 简单使用
CoordinatorLayout:协调者布局,用来组织内部的子view之间的协作的一个view。他其实是一个FrameLayout,它的布局方式默认是层层叠加的。1.实现Toolbar隐藏效果实现隐藏Toolbar,在Toolbar里添加属性: app:layout_scrollFlags=“scroll|enterAlways”<?xml version="1.0" encodin...原创 2020-03-06 15:34:49 · 453 阅读 · 0 评论 -
BaseAdapter抽取
BaseAdapterpublic abstract class BaseAdapter<T> extends RecyclerView.Adapter { Context context; List<T> datalist = new ArrayList<>(); public BaseAdapter(Context contex...原创 2020-04-20 18:16:07 · 493 阅读 · 0 评论 -
BaseActivity BaseFragment 抽取 mvp基类抽取
BaseActivity 对基础功能进行抽取BaseFragment对Fragment 基础功能进行抽取BasePresenterActivity 封装mvp的逻辑BasePresenterFragment 对mvp基础功能进行抽取BaseActivitypublic abstract class BaseActivity extends AppCompatActivity {...原创 2020-04-20 21:06:53 · 705 阅读 · 0 评论 -
9 环信使用
9 环信使用原创 2020-04-23 15:45:10 · 608 阅读 · 0 评论 -
自定义view
1 简介当Android系统内置的View无法实现我们的需求,需要针对业务定制我们想要的View。自定义view分为两种:自定义view和定义viewgroup。自定义View需重写三个函数:onMeasure()、onLayout()、onDraw()。1.1 onMeasureonMeasure(int widthMeasureSpec, int heightMeasureSpec)...原创 2020-05-05 21:23:25 · 308 阅读 · 0 评论 -
动态更新图片模糊效果实现
效果:滑动列表的时候,要渐变图片的透明度。原本是使用高斯模糊,但是高斯模糊会有大量的计算,导致页面卡顿。现在实现思路是图片上层放一张白色完全透明图片,当滑动的时候,根据滑动的距离和图片的高度计算出滑动的比例,同时设置蒙层的透明度来达到渐变的效果。1.布局 <android.support.design.widget.CoordinatorLayout xmlns:app="http://schemas.android.com/apk/res-auto"原创 2020-05-11 17:27:04 · 216 阅读 · 0 评论 -
RecyclerView 拖动排序 左右滑动删除
itemTouchHelper.attachToRecyclerView(mRecycler);ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback(){ //同来设置 拖拽移动,或移动删除 @Override public int getMovementFlags(RecyclerView recyclerView, Recycler...原创 2020-05-08 22:43:17 · 330 阅读 · 0 评论 -
SnackBar 简单使用
1.简介Snackbar是Android Support Design Library库中的一个控件,可以在屏幕底部快速弹出消息,比Toast更加好用.可以添加点击行为。多用于结合协调布局使用(CoordinatorLayout)。 implementation 'com.android.support:design:28.0.0'2.常用方法make(View view, CharSequence text, int duration) 创建对象 ;view是父容器,也是锚点。durat原创 2020-05-12 13:54:43 · 7413 阅读 · 0 评论 -
协调布局(CoordinatorLayout)实现 详情页
1.接口分析可以看到接口提供了网页数据,需要webView控件呈现。{ "body": "<div class=\"main-wrap content-wrap\">\n<div class=\"headline\">\n\n<div class=\"img-place-holder\"></div>\n\n\n\n</div>\n\n<div class=\"content-inner\">\n\n\n\n\n<div.原创 2020-05-13 15:57:11 · 1541 阅读 · 1 评论 -
16.1 jsoup 简单使用
1.简介jsoup is a Java library for working with real-world HTML. It provides a very convenient API for fetching URLs and extracting and manipulating data, using the best of HTML5 DOM methods and CSS selectors.jsoup是一个用于处理实际HTML的Java库。它使用HTML5最佳DOM方法和CSS选择原创 2020-05-11 22:38:45 · 317 阅读 · 0 评论 -
事件分发机制
11 事件分发机制、自定义view原创 2020-04-29 20:24:56 · 515 阅读 · 0 评论 -
自定义 FlowingLayout流式布局
1.特点:以setAdapter形式注入数据,使用观察者模式支持更新数据。1.支持边框颜色2.支持边框宽度3.支持填充颜色4.支持圆角弧度5.支持文本颜色效果图:2.使用1.project–> build.gradle文件添加allprojects { repositories { google() jcenter() maven{ url "https://jitpack.io"} }}2.原创 2021-05-18 22:21:46 · 155 阅读 · 0 评论