
Android
文章平均质量分 62
Android开发进阶之路,从Gradle开始到源码解析设计模式,向着架构师的方向前进!
杨天福911
一个沪漂奋斗中的码农……
展开
-
window透明主题取消进场动画
透明主题,进场动画,由下往上动画原创 2023-09-22 14:42:29 · 179 阅读 · 0 评论 -
Android开发中
文章目录idmap开发者模式正常主题monkey自测查看广播队列日志不显示shared_prefssetting存储本地数据库查询keyevent 输入logcat命令复制多个文件(文件夹下所有文件)到指定路径launcher冷启动IO 监听查看内存系统属性SystemProperties反射调用idmapadb shell idmap --inspect /data/resource-cache/vendor@overlay@.apk@vendor@priv-app@account.apk@idmap原创 2022-02-19 19:47:58 · 1639 阅读 · 0 评论 -
Paint绘制圆角矩形
import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.graphics.drawable.ColorDrawable;import android.util.AttributeSet;public class Ro.原创 2021-10-25 18:19:35 · 1976 阅读 · 0 评论 -
JNI中Native方法的注册方式
文章目录JNI中native方法注册native方法静态注册native方法动态注册数据类型转换方法签名:使用javap自动生成方法签名JNIEnvJNI中native方法注册jni是Java Native Interface的缩写,Java本地接口,是Java与其他语言(native语言)通信的桥梁Native方法注册分为静态注册(多用于NDK开发)和动态注册(多用于framework开发)native方法静态注册AndroidStudio中新建一个lib包,本例仿照MediaRecord原创 2021-07-16 17:32:15 · 1194 阅读 · 6 评论 -
ServerSocket和Socket连接
文章目录概述:Socket和浏览器通信连接和通信Socket保持连接通信概述:ServerSocket类 TCP协议,服务器端,通过serveSocket.accept();方法获取socket实例Socket类 TCP协议 通过new Socket()获取实例,创建Socket对象的时候则需要声明一个IP地址和ServerSocket对象的端口号,这样才能对服务端发出连接请求客户端上的使用1.getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputS原创 2021-07-13 15:44:35 · 1776 阅读 · 0 评论 -
APK反编译的方法(未混淆)
文章目录需要的工具反编译方法过程需要的工具下载地址:链接:https://pan.baidu.com/s/1kEvmRyTQUp7ujnvsfELJZA 提取码:sb8m 复制这段内容后打开百度网盘手机App,操作更方便哦apktool 资源文件获取, 可以提取出图片文件和布局文件进行使用查看dex2jar 将apk反编译成java源码,将classes.dex转化成 .jar文件jd-gui 查看APK中classes.dex转化成出的 .jar文件,即源码文件反编译方法过程原创 2021-04-13 14:47:35 · 4739 阅读 · 0 评论 -
Apk瘦身压缩体验
文章目录资源统一资源统一尽量一个项目使用同一套资源,对于绝大对数APP来说,只需要取一套设计图就足够了。鉴于现在分辨率的趋势,建议取720p的资源,放到xhdpi目录。相对于多套资源,只使用720P的一套资源,在视觉上差别不大,很多大公司的产品也是如此,但却能显著的减少资源占用大小,顺便也能减轻设计师的出图工作量了。不是xhdpi的目录都删除,而是强调保留一套设计资源就够了。资源图片引入前先进行压缩,不使用原图,...原创 2021-02-03 21:03:14 · 7959 阅读 · 2 评论 -
加密和编码解析
文章目录古典密码学移位式加密替换式加密现代密码学对称加密⾮对称加密签名与认证:hash算法编码和解码Base64编码URL 使⽤的百分号编码压缩与解压缩编码序列化古典密码学起源于古代战争:在战争中,为了防⽌书信被截获后重要信息泄露,⼈们开始对书信进⾏加密。移位式加密如密码棒,使⽤布条缠绕在⽊棒上的⽅式来对书信进⾏加密加密算法:缠绕后书写 密钥:⽊棒的尺⼨替换式加密按规则使⽤不同的⽂字来替换掉原先的⽂字来进⾏加密。现代密码学可以加密任何⼆进制数据⾮对称加密的出现使得密码学原创 2021-01-29 21:38:50 · 7266 阅读 · 0 评论 -
Android开发自定义view统一验证码输入框
文章目录布局文件自定义view输入监听布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout原创 2020-12-23 10:45:45 · 6363 阅读 · 0 评论 -
ScrollView高度不能充满全屏
android:fillViewport 属性解决ScrollView高度不能充满全屏的问题 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:scrollbars="none" >...原创 2020-11-25 13:56:55 · 5806 阅读 · 0 评论 -
selector中使用state_enabled设置自定义控件可变背景drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:ignore="MissingDefaultResource"> <item android:state_enabled="false"原创 2020-11-25 13:55:16 · 5707 阅读 · 0 评论 -
gradlew常用命令笔记
查看错误信息:gradlew compileDebugSources.\gradlew compileDebug --stacktrace.\gradlew compileDebugSources 查看依赖gradlew :app:dependencies 查看依赖关系./gradlew :app:dependencies –configuratio...原创 2020-05-05 20:46:27 · 7665 阅读 · 0 评论 -
Canvas绘制自定义view的颜色PorterDuffXfermode的选择
自定义view样色色差问题自定义view在动态设置颜色的时候可能UI显示的效果和自己设置的值不一样,这个就是你的view中颜色层叠方式不太对,使用 Paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));给画笔这个Xfermode,各种效果如下图所示完整自定义view仿照电池充电时电量的自定义view...原创 2020-04-22 14:55:03 · 6123 阅读 · 0 评论 -
android自定义形状的双正弦曲线(充电电池浮动电量),自定义View的getWidth()为0的问题
文章目录自定义viewattrs下resources相关styleablexml 引用动态设置自定义viewimport android.animation.Animator;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.animation.Val...原创 2020-03-31 16:07:12 · 7335 阅读 · 0 评论 -
TabLayout和androidx下的ViewPager的联动导航,白底黑字状态栏
文章目录xml文件viewpager的adapteractivity中联动实现Fragment样例获取Tab的item布局的工具xml文件<androidx.viewpager.widget.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" ...原创 2020-03-19 23:09:16 · 7476 阅读 · 0 评论 -
Mac相关配置(本地host,端口被占用)
Mac 配置host Mac 配置hostsudo vim /etc/hosts然后输入你电脑的密码进入host文件,按i键进入编辑状态,修改host。然后,ESC退出编辑状态,:wq保存并退出vim然后就可以使用域名去访问本地环境,而不用使用IP访问了。127.0.0.1 localhost192.168.1.193 test-keep.kuaizaixuetan...原创 2019-12-12 10:03:26 · 8423 阅读 · 0 评论 -
Android开发关于友盟分享的封装示例
分享图片给微信好友 && 分享链接给微信好友package com.thesis.course.minicourse.umeng;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.util.Log;impor...原创 2019-11-26 18:10:05 · 6467 阅读 · 0 评论 -
日志保存SD卡并上传服务器的工具类
日志本地写入过于频繁或者积累太多会导致应用卡顿和GC,应当及时或者定期清除文件。package com.bliss.yang.signingapplication.utils;import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageMan...原创 2019-11-20 11:15:46 · 5581 阅读 · 0 评论 -
Android使用MediaRecorder和MediaPlayer实现仿微信音频的录制,播放,停止和删除
用到的类 private MediaRecorder mediaRecorder; private MediaPlayer mediaPlayer; //生成的本地文件名和路径 private String path = Environment.getExternalStorageDirectory()+"/1024/fuck.amr";音频录制 /** ...原创 2019-11-01 18:32:59 · 5925 阅读 · 0 评论 -
webview添加仿微信横向加载进度条(渐变色)
progressbar使用 <FrameLayout android:id="@+id/fl_video" android:layout_width="match_parent" android:layout_height="match_parent"> <wendu.dsbridg...原创 2019-10-23 19:43:55 · 5931 阅读 · 0 评论 -
ConstraintLayout均分布局和SpannableStringBuilder链接超文本定义用户隐私协议弹窗
ConstraintLayout实现的效果<ImageView android:id="@+id/iv_divide" android:layout_width="match_parent" android:layout_height="1dp" app:layout_constraintBottom_toBottomO...原创 2019-09-30 15:20:42 · 5916 阅读 · 0 评论 -
Android开发同时安装debug和release环境下的apk
正常开发中我们至少都要有两个以上的环境,我们在测试一个东西的时候就难免多次重复安装或者打包不同环境的APP给同事进行测试,不是很方便,如果能够在同一台手机上安装两个一样的APP,但是连接环境不一样,比如,一个连接生产环境,一个连接测试环境,这样测试起来就会方便一些,核心操作其实就是更改debug和release包下的applicationId,这个是标记一个程序的唯一标识,以下方案亲测有效,如果...原创 2019-06-24 14:23:54 · 5866 阅读 · 0 评论 -
Android工具类的整理
一点整理,欢迎各路大佬莅临指导android开发的工具类https://github.com/BlissYang91/note包含android常规开发中常用的工具类,例如webview中的图片保存,视频全屏播放,正则匹配,微信登录,各种拼接转换工具,可以加快开发速度,更多的时间去处理业务需求,保持持续更新,希望对大家有些微帮助。Acvitity的栈式管理工具 GlideUti...原创 2019-06-20 15:44:49 · 5973 阅读 · 0 评论 -
Android 开发APK安装后点击[打开]与[完成]的区别引起的问题
问题是这样的,手机安装一个apk文件,安装后,会有一个完成和打开的选项,如果点击完成,会回到桌面看到APP的启动图标,这个是正常的,如果安装后点击的是打开就不会回到桌面,而是直接打开APP,这个时候就会遇到一个问题:在这个打开的APP中点击home键退入后台,再次启动的时候还是会重走launchacvitity的onCreate方法,如果你从首页跳到了其他acvitity,点击home回到桌面,...原创 2019-05-22 18:11:06 · 5833 阅读 · 0 评论 -
android对网络请求做单元测试等不到callback的问题
在做单元测试的时候如果遇到了网络请求的测试,因为牵涉到异步,如果直接运行测试代码,就会发现,测试代码走完的时候,callback还在路上没有回来,这时候一回头,发现爸爸没有了,很尴尬,所以就永远拿不到回调数据,网络上也有很多办法解决,把异步请求改为同步测试,用CountDownLatch的方式,还有rxjava的方式,但是如果网络请求用的异步的execute进行请求,这些方式我都试过了,并没有什...原创 2019-05-08 10:08:06 · 6985 阅读 · 0 评论 -
以View的形式在BaseAcvitity中设置全局唯一progressDialog
文章目录工具类ProgressDialogAlertDialogStyleBaseAcvitity中统一配置自定义dialog显示样式view_dialog_progress.xml自定义进度条样式dialog 窗体背景工具类ProgressDialogpackage bang.lib.base;import android.app.Dialog;import android.conte...原创 2019-04-19 12:01:56 · 6590 阅读 · 0 评论 -
Android复制手机号码到剪切板并调起打电话功能
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); // 创建普通字符型ClipData ClipData mClipData = ClipData.newPlainText("Label_zfb", tel); /...原创 2019-04-01 14:44:25 · 7056 阅读 · 0 评论 -
androidstudio上传自己的lib到Jcenter
rootproject的build.gradle添加依赖buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.1' classpath 'c...原创 2019-03-08 10:35:17 · 5938 阅读 · 0 评论 -
OKHTTP3.13.1拦截器方式实现文件下载
下载进度监听package com.bliss.yang.myokhttp;/** * @autor YangTianFu * @Email ytfunny@126.com * @优快云 https://blog.youkuaiyun.com/ytfunnysite * @Date 2019/3/5 18:54 */public interface ProgressListener ...原创 2019-03-05 19:19:25 · 6819 阅读 · 0 评论 -
关于targetSdkVersion升级到28以后android9.0(Android P)断掉http请求问题
错误:Android err_cleartext_not_permitted原因:安卓9.0新的限制对未加密流量不在信任,直接放弃请求.解决方案:在manifest文件application节点下增加:android:usesCleartextTraffic=“true”如果后台支持,让后台把项目中所有http请求改成https即可以上两种方案都可以解决,推荐第二种,比较稳,也...原创 2019-02-27 16:32:12 · 8266 阅读 · 0 评论 -
关于android8.0启动页设置方向后启动不起来问题
关于java.lang.RuntimeException:Unable to start activity ComponentInfo.LaunchActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation导致APP启动不起来的问题。解决方案:关于a...原创 2019-02-25 15:10:56 · 5241 阅读 · 0 评论 -
android开发关于H5页面加载video.js全屏视频导致软键盘掉不起来的问题
上篇文章中写道了关于H5页面中使用webview加载video.js全屏视频无法播放的问题,后续又发现了一个新的适配问题,就是全屏返回后,如果当前H5页面中有类似搜索框一样需要调起系统软键盘的操作的话,就会发现这个时候掉不起来了,一定要当前页面执行了onPause方法之后再返回才正常。这个就是由于使用了bringToFront()方法,这个方法会使当前控件脱离父布局的约束,并且覆盖到父布局上方,...原创 2019-02-25 14:42:13 · 7713 阅读 · 2 评论 -
AndroidStudio3.2遇上gradle3.2.1构建升级填坑
文章目录问题概述exclude去除项目中gradle重复依赖exclude排除所有exclude排除部分(逐个排除)Force 强制指定使用gradle生成指定名称的apk包构建异常处理问题概述过完年后,公司项目突然跑不起来了,报了各种错误,内心真的是万马奔腾,一番云雨之后,痛定思痛,忽然想起来了去年一年每次打开as的那句关于2018年底即将弃用complie的提示语,由于种种原因和考虑,为...原创 2019-02-18 11:40:41 · 6417 阅读 · 0 评论 -
Android开发APP内自动更新不会安装的问题(适配Android8.0以上系统)
文章目录适配说明打开允许未知应用安装的权限判断应用是否已经安装普通浏览器下载apk安全下载(应用宝市场下载apk)适配说明自动更新很多APP都会有,也有很多第三方的库,但是这些库很多也都是两三年之前写的,当时并没有8.0,9.0这些高版本的手机,如果贸然使用,在测试的时候发现没有问题,到了新版本上就会在很多手机上发现自动更新下载完成后并不会自动安装,这样就会重复下载,但每次下载都不会安装,这...原创 2019-01-10 22:27:55 · 7461 阅读 · 3 评论 -
动态申请相机,麦克风权限适配(魅族,8.0,9.0系统)
文章目录在acvitity中动态权限申请在fragment中动态申请权限检测摄像头是否可用检测麦克风是否可用动态权限异常引导用户手动授权当前申请权限结果展示跳转到系统权限设置手动设置权限不同手机系统权限设置详情页适配跳转到系统设置页面在acvitity中动态权限申请 public void checkPermissionInAcvitity(Context context,int result...原创 2019-01-10 22:04:50 · 8657 阅读 · 1 评论 -
Android开发apk包删除不必要的权限申请
bug场景:项目中因为进度有要求,不能什么功能都自己写,很多时候都要用嫁衣神功拿别人造好的轮子实现自己的业务需求,这是常事,但是不同公司,不同产品提的需求都是不一样的,这样我们用的第三方库当然也就良莠不齐,这个时候就会可能出现一个问题,就是我们项目中不需要的一个权限,而且是动态获取的权限,在我们的manifest文件中并没有声明使用,这个时候就会很尴尬,人家测试或者产品问你,你这个权限是干什么...原创 2019-01-02 19:19:52 · 11395 阅读 · 8 评论 -
Android开发利用webview识别H5中图片并保存到相册(手机,平板适配,避免保存两次图片)
文章目录前言Step1:webview添加长按事件Step2:弹出保存图片的底部对话框Step3:将图片转为BitmapStep4:保存到相册(动态权限申请)Step5 保存成功,通知系统更新相册Step6,Fragment中动态权限申请回调处理补充前言本文是基于在fragment中执行保存H5图片到本地相册的,相对于在acvitity中执行,削微有一点点复杂,但差别不大,代码中有明显区别...原创 2018-12-29 21:47:52 · 9993 阅读 · 0 评论 -
在有EditText的dialog弹窗中开关系统软键盘,以及系统键盘遮挡部分布局的问题
工具类,C-V操作即可使用package bang.lib.utils;import android.app.Activity;import android.content.Context;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import java.u...原创 2018-12-19 19:40:17 · 6891 阅读 · 0 评论 -
Glide加载图片完成的回调
用于加载完成图片后进行的整理操作,比如在listview中或者RecycleView中使用Glide加载完图片后图片不能自己显示完全,要手动上划才能显示完全,这是因为图片加载是异步的,在图片渲染完成之前已经更新了adapter,所以listview在重新绘制的时候并没有把图片的高度算进去,因为这个时候很可能图片还没有渲染出来。可以考虑用回调接口的方式,在图片加载完成后让listview滚动到最底...原创 2018-12-18 11:55:46 · 11812 阅读 · 3 评论 -
设置APP字体大小不跟随手机系统字体而改变
设置H5页面中字体大小不跟随手机系统 WebSettings webSettings = webView.getSettings(); webSettings.setTextZoom(100);设置原生APP字体不跟随系统字体而变化在acvitity的父类中重写getResource方法 @Override public Resources getResourc...原创 2018-12-03 14:42:22 · 9816 阅读 · 0 评论