
Android实例
文章平均质量分 88
Android实战,实例
It一zhai男
Android,kotlin,Java,flutter,python,
展开
-
【注解】annotationProcessor自动生成代码
使用annotationProcessor根据注解自动生成代码。本文先不讲原理,只讲实现过程。尝试了一下在模块化中使用注解自动生成代码,但是会报错:Attribute value must be constant。这是因为在library模块中使用该注解(即使用BindView绑定id)而library构建时产生的R文件在壳模块app中,如下图所示:所以在library中使用注解绑定id,...原创 2020-04-09 15:02:07 · 1308 阅读 · 0 评论 -
【Android实例】用设计原则来重构1像素保活代码
1 类图在【FJU项目】1像素进程保活(二)中,涉及到的几个类的类图如下所示(仅供参考):实线箭头:关联虚线箭头:依赖在上图中,OnePixelManager里面有太多的职责,违背了单一职责原则。里面还有很多地方违背了其它的设计原则,稍后通过代码进行分析。2 代码分析2.1 之前的OnePixelManager类源码如下:package com.yds.jianshu.onepixe...原创 2019-08-02 23:02:03 · 369 阅读 · 0 评论 -
【RxJava2.0】基本使用(一)
文章目录1 Gradle配置2 基本原理3 ObservableEmitter和Disposable本文主要参考这里,因为之前没用过RxJava2.0,最近想学习学习,这位大神写得很不错,但是光看看难以记牢,就自己敲文字加代码加强记忆。RxJava2已经出来很久了,网上的博客很多,现在RxJava3都出来了,本文算是学习笔记。1 Gradle配置要在Android中使用RxJava2,先添...原创 2019-07-29 23:35:22 · 517 阅读 · 0 评论 -
【Android组件开发】统一配置文件
由于组件化实践中模块比较多,因此配置gradle,添加依赖库时,需要考虑简化工作。第一步:在Project目录下点击鼠标右键,依次new——>File第二步:然后输入统一配置文件的名称,以.gradle结尾第三步:在新建的统一配置文件fjs.gradle里面配置要管理的项,代码如下所示ext{ isApplication = false //false:作为Lib组件存在,...原创 2019-07-24 22:08:50 · 619 阅读 · 0 评论 -
MultiImageView+PhotoView+ViewPager图片预览
效果截图PhotoViewPhotoView是一个github上的一个开源项目。将下面加入到根build.gradle文件中allprojects { repositories { maven { url "https://jitpack.io" } }}然后,加入库到你的模块build.gradledependencies { imp...原创 2020-04-09 11:39:31 · 487 阅读 · 1 评论 -
Android实现圆形头像效果
效果截图实现原理对于圆形头像的实现,其实就是对方形图像做某些处理,以达到圆形头像的效果。一般我们会通过Canvas和Paint结合来实现这种效果。##自定义View来实现因为圆形头像是视觉方面的需求,一般我们会考虑能否从自定义View的角度来解决问题。自定义的核心有两点:视觉和交互。视觉由onMeasure、onLayout、onDraw这三个方法来完成,而交互则是由dispatchTo...原创 2020-03-30 15:30:31 · 2368 阅读 · 0 评论 -
【项目FJU】使用SwipeRefreshLayout+RecyclerView制作下拉刷新上拉加载更多
效果截图https://github.com/ydslib/Jianshu/tree/develop需要用到的知识setColorSchemeResources:设置下拉刷新进度条的颜色setOnRefreshListener:设置下拉刷新监听android:overScrollMode:设置滑动到边缘时无效果模式ContentLoadingProgressBar:内容加载进度条,继...原创 2020-03-30 15:28:28 · 414 阅读 · 0 评论 -
【布局属性】TabLayout 去掉按下时的阴影效果
之前在TabLayout的xml中添加以下属性就可以去掉按下时的阴影效果:app:tabBackground="@android:color/transparent"但现在升级androidx后,该属性无效。 添加以下属性可以去掉按下时的阴影效果: app:tabRippleColor = "@android:color/transparent"...原创 2020-02-20 18:22:03 · 1074 阅读 · 0 评论 -
【项目FJU】Fragment+ViewPager+TabLayout制作底部导航
实例1 导入依赖在项目的build.gradle里面添加implementation rootProject.ext.dependencies["design"]在gradle的统一管理配置文件里添加2 Fragment本例一共写5个Fragment,如下图所示:如HomeFragmentpackage com.yds.mainmodule.fragment;import...原创 2019-09-19 21:57:33 · 492 阅读 · 0 评论 -
【FJU项目】1像素进程保活(二)
1 前言前面一篇【Android实例】1像素进程保活(一)是最基础的写法,但是这种写法还有些不足,还可以进行优化。因为内存也是一个考虑的因素,内存越多的进程会最先被kill掉,所以我们可以开启一个服务,然后将该服务放在另一个进程中,这样这个进程就更加的轻量,更不容易被杀死。系统出于体验和性能上的考虑,app在退到后台时系统并不会真正的kill掉这个进程,而是将其缓存起来。打开的应用越多,后台缓...原创 2019-07-28 22:44:04 · 561 阅读 · 0 评论 -
【Android实例】1像素保活实例
文章目录1 进程保活2管理类OnePixelManager3 广播接收系统发送的广播4 一像素Activity5 MainActivity方法调用6 AndroidManifest配置7 优化部分1 进程保活1像素保活原理是,监听手机屏幕状态,如果手机黑屏,则启动一个1像素的Activity,减少该应用被回收的几率;在屏幕亮的时候,就关闭该Activity。1像素保活对某些手机不管用,亲测两款...原创 2019-07-23 22:42:39 · 3491 阅读 · 1 评论 -
Android基础——Fragment详解
Android基础——Fragment详解1.1 Fragment1.1 Fragment1.1.1 Fragment的产生与介绍很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的。难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊。Fragment的出现就是为了解决这样的问题。你可以把Fragment当成Activity的一个界面的一个组成部分,原创 2017-09-03 23:31:24 · 422 阅读 · 0 评论 -
Android自定义权限
Android自定义权限一、定义权限的相关知识android允许我们使用permission标签,在Manifest文件中定义属于自己的权限,但Android不允许两个不同的应用定义一个相同名字的权限(除非这两个应用拥有相同的签名),所以在命名的时候,需要注意。android:exportedandroid:exported 是Android中的四大组件 Activity,Service,Provi原创 2017-08-21 14:28:44 · 1276 阅读 · 0 评论 -
【IPC】AIDL简单使用
AIDL简单使用1、概述什么是AIDL?Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他的基于RPC的解决方案一样,Android使用一种接口定义语言(Interface Definition原创 2017-08-18 12:18:01 · 614 阅读 · 0 评论 -
TabLayout简单使用(一)
1 导入包29以前:implementation 'com.android.support:design:28.0.0'29及以后(使用androidx):implementation 'com.google.android.material:material:1.0.0'2 常用的布局属性2.1 tabIndicatorFullWidthtabIndicatorFullWidt...原创 2020-02-28 12:34:35 · 881 阅读 · 0 评论 -
Fragment+layout+viewpager嵌套Fragment+layout+viewpager解决切换空白问题
Fragment+layout+viewpager嵌套Fragment+layout+viewpager,切换外层Fragment后再返回最开始的Fragment会出现空白,无法加载,可以将getSupportFragmentManager()改成getChildFragmentManager()public class HomeFragment extends Fragment { p...原创 2020-02-24 16:36:50 · 327 阅读 · 0 评论 -
可展开的列表组件——ExpandableListView深入解析
可展开的列表组件——ExpandableListView深入解析一、知识点 1、ExpandableListView常用XML属性 2.ExpandableListView继承BaseExpandableListAdapter后重写的各个函数详解 3.ExpandableListView自定义下拉图标二、解析 2.1、ExpandableListView常用XML属性2.1.1 设置点击it原创 2016-11-02 21:44:41 · 852 阅读 · 0 评论 -
Android——Listview不用notifydatasetchanged更新数据的方法
Android——Listview不用notifydatasetchanged更新数据的方法一、介绍 先来介绍一下listview更新数据的几种方法,目前我知道的方法有如下几种: 1. 每次更新数据时都调用listview.setadapter(); 2. 每次更新数据时都调用adapter.notifydatasetchanged(); 3. 在自定义的adapter里添加更新函数upda原创 2016-10-19 12:39:47 · 5337 阅读 · 1 评论 -
Android学习笔记01——SoundPool详解
Android学习笔记01——SoundPool详解 游戏中有时需要根据情况播放即时音效,即时音效的特点是短暂、可以重复、可以同时播放。由于Android提供的MediaPlayer会占用大量的系统资源,而且播放时还需要进行缓冲,有较大的时延,因此使用MediaPlayer无法实现即时音效。SoundPool类是用于管理和播放应用程序中的声音资源,使用时首先需要通过该类将声音资源加载到内存中,然原创 2016-08-11 14:01:26 · 471 阅读 · 0 评论 -
Android自定义侧滑菜单简单示例
Android侧滑菜单简单示例本次内容涉及到以下几点: 1.自定义属性TypedArray。这里简单讲下,有时Android自带的控件及属性不能满足我们的需求,则我们就会想到自定义属性。当我们用到TypedArray时,首先要在res/values下建立一个attr.xml。而且若在xml使用该属性,则要定义xml命名空间,然后使用其属性。xmlns=”http://schemas.android原创 2016-08-10 21:35:34 · 444 阅读 · 0 评论 -
仿QQ主界面Fragment简单应用
仿QQ主界面Fragment简单应用什么是Fragment,Fragment的产生与生命周期相信大家都很清楚,不清楚的网上也可以查到,一查一大堆,在此,笔者就不再啰嗦了,开始进入正题,编写实例。想做出的效果图如下: 在activity_main.xml中的代码为:<RelativeLayout android:layout_width="match_parent" android原创 2016-01-12 13:05:31 · 1131 阅读 · 0 评论