Android笔记
文章平均质量分 51
萌面小侠Plus
日常分享个人的工作学习经验,欢迎大佬指点!
展开
-
Android笔记(二十七):自定义Dialog实现居中Toast
记录实现符合项目需求的Toast弹窗。原创 2023-08-23 20:59:56 · 811 阅读 · 0 评论 -
Android笔记(二十四):gradle写一个android12自动适配exported脚本,支持aab
由于Google play的政策,提审aab的时候需要适配android12,适配android12最大的工作就是在AndroidManifesst.xml文件中声明的四大组件,都要显式声明exported字段。如果手动添加,在遇到第三方sdk时就会比较麻烦,所以只能使用gradle脚本自动添加,而网上给的gradle脚本例子都是只对apk生效,所以自己手动改造一下,以支持aab。遍历AndroidManifest.xml文件的每一个节点,识别到activity,receiver,service节点时,如果原创 2022-12-16 11:03:01 · 886 阅读 · 0 评论 -
Android笔记(九):获取屏幕高度,状态栏高度,虚拟导航栏高度
本文通过画图的方式去理解如何获取屏幕高度,状态栏高度,虚拟导航栏高。原创 2022-11-18 17:14:55 · 2631 阅读 · 0 评论 -
Android笔记(二十一):Gradle小技巧——自定义Task生成dex文件/修改assets目录下的文件
项目想用dex动态加载,而androidstudio java模块构建完成后会生成jar,需要手动转成dex文件,比较麻烦,因此可以自定义gradle task用于生成dex文件。原创 2022-09-23 17:29:58 · 1733 阅读 · 0 评论 -
Android笔记(十八):ViewPager2嵌套WebView手势冲突问题
正常情况下,viewpage2嵌套webview会导致网页内容无法滑动,解决该问题的核心在与利用requestDisallowInterceptTouchEvent与onOverScrolled这两个方法重写WebView如下:public class NestedWebView extends WebView{ public NestedWebView(Context context) { super(context); } public NestedWeb原创 2022-03-20 19:00:01 · 1266 阅读 · 0 评论 -
Android笔记(十七):Gradle配置多渠道资源签名打包
在app build.gradle下编辑1.配置不同渠道打包签名:android { ... signingConfigs { debug { keyAlias '' keyPassword '' storeFile file('xxx.keystore') storePassword 'android' } release { .原创 2020-10-09 15:59:43 · 591 阅读 · 0 评论 -
Android笔记(十六):Gradle脚本动态修改AndroidManifest.xml的MainActivity
在主模块build.gradle添加如下代码即可修改AndroidManifest.xml的MainActivity原理:利用Groovy XmlSlurper来改写xml文件import groovy.xml.XmlUtilthis.afterEvaluate { def manifestFile = "${projectDir}/src/main/AndroidManifest.xml def xml = file(manifestFile) def manifes原创 2020-10-09 14:13:37 · 2077 阅读 · 0 评论 -
Android笔记(十五):仿UC底部弹出菜单
效果图:v1.0.0是采用PopupWindow+Animation+阴影子Window来实现;v1.1.0是采用伸缩RelativeLayout+Animation+设置背景色来实现具体见:源码原创 2018-09-29 09:44:22 · 456 阅读 · 0 评论 -
Android笔记(十四):分析SingleTask和SingleInstance启动模式
ActivityA启动ActivityB(SingleTask模式):1.ActivityA与ActivityB在同一个应用• 任务栈中存在ActivityB,则不会创建新的,直接使用它(调用onNewIntent),并将它之上的Activity出栈•任务栈中不存在ActivityB,则在栈顶新建一个2.ActivityA在应用A,ActivityB在应用B• 应用B处于......原创 2018-06-09 12:59:39 · 3739 阅读 · 0 评论 -
Android笔记(十三):总结Activity更多生命周期方法回调顺序
官网图补充:回调方法顺序:1.App正常启动:onCreate->onStart->onResume->onWindowFoucusChanged2.启动后屏幕熄灭/Home返回App:onPause->onSaveInstanceState->onStop->onWindowFocusChanged3.屏幕重新亮起:onRestart->onStart-...原创 2018-06-09 10:01:26 · 756 阅读 · 0 评论 -
Android笔记(十二):API 19以上WebView缓存目录
Android4.4+当在项目中使用了WebView时,会在/data/data/package_name/目录下生成一个app_webview文件夹,而4.4以下则没有页面缓存:加载一个网页时的html,js,css等页面或者资源文件,这些缓存资源是由于webview的行为而产生,开发者只能通过配置http响应头影响浏览器的行为才能间接地影响到这些缓存数据。Android4.4以上存放在Cach...原创 2018-04-17 16:09:27 · 5405 阅读 · 0 评论 -
Android笔记(十一):MultiSelectListPreference设置监听的返回值
findPreference("MultiSelectListPreference's key").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Prefer...原创 2018-04-17 13:57:53 · 1164 阅读 · 0 评论 -
Android笔记(四):Service的启动和停止对生命周期的影响
Service的启动方式有三种,每种对于其生命周期的影响不同,而且停止服务的方式也不太一样。下面分情况说明(在此之前后台不存在服务进程):①只通过startService启动服务:Service会依次调用onCreate,onStartCommand。此后再调用startService只调用onStartCommand。当调用stopService会调用onDestroy销毁服原创 2017-12-03 20:43:29 · 459 阅读 · 0 评论 -
Android笔记(二):网络图片加载器
可以根据url地址来加载图片,并缓存。public class AsyncImageLoader { final Handler handler = new Handler(Looper.getMainLooper()); private HashMap> imageCache; String title; //图片对应的标题 public AsyncIma原创 2017-12-01 15:57:12 · 226 阅读 · 0 评论 -
Android笔记(三):整理——利用http上传小文件
本文记录如何使用rfc1867协议来上传文本文件(大小不能超过2M)首先客户端上传文件时,服务器要收到客户端的请求就必须在客户端人工构造rfc1867协议规定的请求内容。具体如下:--UUIDContent-Disposition:form-data;name="字段名"Content-Type:text/plain;charset=UTF-8 //如果上传原创 2017-12-02 15:17:16 · 367 阅读 · 0 评论 -
WebView+Fragment+ViewPager构建浏览器多标签页
public class MyViewPager extends ViewPager implements OnGestureListener{ private boolean isFullScreen=true; //用于标识viewpager是否拦截事件,防止影响标签的左右滑动 private OnLayoutClickListener lc; private原创 2017-11-21 13:53:59 · 3473 阅读 · 3 评论 -
Android笔记(六):RecyclerView实现上/下滑隐藏/显示顶部搜索栏(item可点击)
效果如下:主界面界面布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_h原创 2018-01-18 22:50:31 · 6275 阅读 · 2 评论 -
Android笔记(五):利用多线程可断点下载远程文件(已解决文件名含有中文)
本文记录用多线程来下载文件(支持断点)FileDownloadController类控制整个文件下载过程,外部通过实例化FileDownloadController对象设置下载过程监听并调用startDownload方法即可开始下载文件。public class FileDownloadController { private static final int START = 0; ...原创 2018-01-15 10:19:49 · 275 阅读 · 0 评论 -
Android笔记(八):理解解压zip文件过程(已解决中文乱码)
ZipExtractorTask类只能解压zip类型的压缩文件,并带有解压过程对话框,有待完善解压非zip文件的提示。public class ZipExtractorTask extends AsyncTask<Void, Integer, Long> { private final String TAG = "ZipExtractorTask"; private F...原创 2018-02-09 18:30:04 · 3375 阅读 · 0 评论 -
Android笔记(七):app混淆签名打包过程记录
1.配置模块下的build.gradle文件:apply plugin: 'com.android.application'def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}android { compileSdkVersion 26 de...原创 2018-02-06 14:07:14 · 447 阅读 · 0 评论 -
Android笔记(九):获取屏幕高度,状态栏高度,虚拟导航栏高度
通过getWindow().getDecorView().getHeight()或者DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getRealMetrics(metrics); int realHeight = metrics.heightPixels; 可以获取屏幕像素高...原创 2018-03-06 13:00:22 · 2605 阅读 · 0 评论 -
Android笔记(十):判断虚拟软键盘是否弹出
private boolean isSoftInputMethodShowing() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int usableH...原创 2018-03-06 13:04:45 · 362 阅读 · 0 评论 -
Android笔记(一):ViewDragHelper实现底部上滑同时底部下滑
先看看效果图:自定义布局控件:public class DragLayout extends FrameLayout { private int title; //限制上滑后的顶部标题高度大小 private Status mStatus = Status.Open; //默认底部是不上滑的 private View mTopCont原创 2017-12-01 11:08:24 · 1089 阅读 · 0 评论