android开发点滴
文章平均质量分 70
挨踢MAN
每天进步一点点.
展开
-
Android setMaxLifecycle和BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT浅析
最近公司动荡,我在的项目受大环境影响收益每年下滑,可能要领盒饭了,所以最近都在复习相关基础内容,毕竟小脑袋瓜会忘记以前学过的东西。在ViewPager和Fragment的懒加载中,具体的原理是怎么样的呢?为什么能只执行显示的Fragment的onResume方法?疑问一:设置STARTED后是否执行onResume?那是否能交互?疑问二:FragmentPagerAdapter如果设置STARTED的话,就不会执行到onResume方法,懒加载就无法实现,更没有降级一说?原创 2024-05-16 09:27:26 · 1297 阅读 · 0 评论 -
RecycleView LayoutManage-GridLayoutManage源码浅析
LayoutManage-GridLayoutManage源码浅析原创 2023-03-20 16:16:56 · 933 阅读 · 0 评论 -
Android隐私方法调用监听
前言不知道大家上家各个应用市场会不会经常审核被拒,反正我刚接手的项目由于隐私策略变更给各种被拒,隐私策略其中明确指出用户未同意《隐私协议》前不能采集用户相关的信息,其中就包括imei,deviceId等,虽然现在有些高版本无法获取了,但是不保证一些旧的第三方sdk存在获取的情况,单单手动查找显得有点力不从心,前阵子刚好看到一篇不错的检测文章 刚好记录一下。原作者项目地址-感谢大大的分享 https://github.com/huage2580/PermissionMonitor 原理是使用xposed原创 2022-02-22 11:47:38 · 3385 阅读 · 0 评论 -
Android图片底部对齐(scaleType底部对齐)
背景今天在讨论UI优化的时候,首页有个控件支持ga动态切换背景图,但是该控件的高度并不固定如果直接使用图片背景的话会照成图片失真,如下图(子控件显示条数不固定)这时候ui妹子突然说图片由下往上展示,上面超出部分就不显示了,iOS妹子和小程序小伙异口同声说“没问题”,但是又不能说Android搞不了,只能笑着说没问题(MMP),然后就开始研究起方案。尝试方案一(失败)(scaleType)第一个尝试方案肯定是scaleType了,记得有个fitEnd的属性平时用的少,然后发现并不符合预期,全部效果如原创 2021-11-19 10:55:29 · 3074 阅读 · 0 评论 -
Android Studio 运行项目Build报错乱码问题
处理后的显示步骤:1.Help->Edit Custom VM Options2.在系统打开的文件中末尾加入(-da下面)-Dfile.encoding=UTF-83.File->Invaildate Caches/Resatrt…然后就可以了原创 2021-09-13 16:03:13 · 467 阅读 · 1 评论 -
Android Retrofit修改baseUrl不生效问题
背景后台大佬:我们api目前不够安全,不能直接通过原有地址(https://xxx.xxx.x.x/#/#)访问了,要通过网关访问,所有域名后面加多个路径(https://xxx.xxx.x.x/1/#/#);前端大鸟:简单,我们是采用retrofit+okhttp的网络框架,基础url是配置的,改下就可以,敲代码…//原有Retrofit配置 new Retrofit.Builder().baseUrl("https://xxx.xxx.x.x") .client(getOkHttpC原创 2021-06-25 14:06:32 · 1466 阅读 · 2 评论 -
阿里一键登录java.lang.NoSuchMethodError: no non-static method “Lcom/mobile/auth/gatewayauth/model/RStruct;
先说结果,加入下列混淆:-keep class org.json.** { *;}记录下排除步骤在集成阿里云登录的时候,不混淆的情况不会出现,但开启混淆后就报下面代码java.lang.NoSuchMethodError: no non-static method "Lcom/mobile/auth/gatewayauth/model/RStruct;.toJson()Lorg/json/JSONObject;" at com.mobile.auth.gatewayauth.utils.E原创 2021-05-13 19:31:41 · 1389 阅读 · 2 评论 -
Android ImageView圆角图片的简单实现
背景今天项目中需要用到一个圆角图片,一般来说要么裁剪Drawable,要么就是裁剪画布,这都需要用到自定义控件,有点小麻烦,其实也可以用到gilde框架进行处理: /** * 加载圆角图片 * */ public static void loadImageCircle(Context context, ImageView imageView, Object url, int dp) { //设置图片大小 RoundedCorne原创 2020-08-18 17:08:35 · 3867 阅读 · 0 评论 -
Window相关的知识
Activity中层级分为Activity->PhoneWindow->decorView->[appbar 和 contentView]其中phoneWindow是window的唯一实现,phoneWindow在activity的attach方法中初始化Activity的attach是AMS执行到ActivityThread中的handleMessage中执行launchActivity方法调用,执行完attach后会执行Activity的onCreate方法private Ac原创 2020-07-27 11:04:55 · 148 阅读 · 0 评论 -
OKHttp原理
代码使用 Request build1 = new Request.Builder().url("").addHeader("", "").build(); OkHttpClient build = new OkHttpClient.Builder().build(); Call call = build.newCall(build1); try { call.execute(); } catch (IOException e) { e原创 2020-07-27 10:59:24 · 131 阅读 · 0 评论 -
leakCanary监听原理
WeakReference知识weakReference在java为弱应用对象,在系统发生gc的时候,被weakReference引用的对象会被回收(必然)。构造方法如下:public class WeakReference<T> extends Reference<T> {public WeakReference(T r) { super(r, null);}public WeakReference(T r, ReferenceQueue<? supe原创 2020-07-27 10:57:01 · 171 阅读 · 0 评论 -
eventBus源码解析
两种使用方法不带processor的使用 //注册 EventBus.getDefault().register(this); //发送 EventBus.getDefault().post(""); //处理 @Subscribe(threadMode = ThreadMode.MAIN) public void onReceve(String s) {带processor的使用https://greenrobot.org/eventbus/原创 2020-07-27 10:49:20 · 114 阅读 · 0 评论 -
ARouter路由框架
app build.gradle中添加 annotationProcessor project(':arouter_compiler') // 注解处理器定义注解@Target(ElementType.TYPE) // 该注解作用在类之上@Retention(RetentionPolicy.CLASS) // 要在编译时进行一些预处理操作,注解会在class文件中存在public...原创 2019-12-10 15:26:27 · 183 阅读 · 0 评论 -
Android动态换肤
知识点:1.在Activity的OnCreate方法中会调用AppCompatDelegateImpl类的installViewFactory方法 public void installViewFactory() { LayoutInflater layoutInflater = LayoutInflater.from(this.mContext); ...原创 2019-12-10 14:14:39 · 193 阅读 · 0 评论 -
启动优化
启动优化1.黑白屏问题style设置windowBackground属性 设置过度颜色或者图片windowisTranslucent 设置为透明windowDisablePreview 取消预览view2.代码优化尽量不要在application的主线程中初始化耗时操作,可以开启子线程处理,注意ui更新和异步初始化的问题。代码检测可以使用检测 path为文件输出路径...原创 2019-12-10 14:14:18 · 197 阅读 · 0 评论 -
Android中taskAffinity属性以及跟singleTask的使用笔记
我们首先要有task这个概念,我们可以把task看作存放运行时Activity的集合,也就是一个存放我们App中Activity任务栈 系统按照启动的顺序把Activity有序的存放在里面。而 taskAffinity叫做归属,可以把它理解成把Activity分组的意思,它会把具有相同的Activity“吸附”进一个新的任务栈,可能有人跟我一样没了解这个属性根本看不到有哪里使用过它,其实每个Act...原创 2018-04-25 17:11:01 · 3803 阅读 · 1 评论 -
Handler中MessageQueue的enqueueMessage笔记
今天心血来潮,又默默的想着Handler的实现原理,毕竟面试这个可是热门的话题,虽然看了很多遍源码,但每次都是研究Loop和Handler的关系,今天看着看着进到MessageQueue的源码里,了解了下把Message入队的操作,分享给大家。首先我们先看Message类,根据名字我们可以知道它是消息的意思,我们每次调用handler.post(Runnable)系统都会调用getPostMess...原创 2018-04-19 13:42:54 · 3900 阅读 · 2 评论 -
字符串转Json
//构建JSON字符串 public void buildJson() throws JSONException { JSONArray json=new JSONArray(); JSONObject jsonObj=new JSONObject(); for(int i=0;i<2;i++)原创 2015-04-27 23:50:08 · 419 阅读 · 0 评论 -
fragment中的attach/detach方法说明
detach()会将view从viewtree中删除,和remove()不同,此时fragment的状态依然保持着,在使用attach()时会再次调用onCreateView()来重绘视图,注意使用detach()后fragment.isAdded()方法将返回false,在使用attach()还原fragment后isAdded()会依然返回false(需要再次确认)原创 2015-08-24 11:31:34 · 9364 阅读 · 1 评论 -
V4包没注释,看不了源码解决方法(网上搜的,亲测可行)
v4关联注释,源码原创 2015-08-24 10:45:13 · 568 阅读 · 0 评论 -
Android改变TextView中部分字体颜色
上代码吧,网上也有很多 // 设置显示文字及字体颜色 String hideMobile = "本次交易短信验证码已发送至您的手机" + mInvestData.getHideMobile(); SpannableStringBuilder style = new SpannableStringBuilder(hideMobile);原创 2015-09-06 17:51:59 · 661 阅读 · 0 评论 -
2015 SDK更新慢,SDK更新不了方法
以前的改host方法现在貌似不给力了,试了很多方法还是改“SDK镜像地址”方法可行。我的网络是8M的,现在更新速度在800K左右,给力有木有. 具体方法是 android sdk manage -- tools -- options 把HTTP proxy service 修改为 : ubuntu.buct.edu.cn ,HTTP proxy Port 修改为 :80。原创 2015-05-01 12:04:09 · 548 阅读 · 0 评论 -
ViewPager+Fragment出现的问题
Ps:很久之前解决的,今天回顾起来发现有点陌生,看来写到博客经常看到比较好吧.之前做过个首界面是Viewpage+Fragment的,用的时候发现有一些瑕疵,一些情况下Fragment会给销毁,认真看了下Viewpager发现这个控件只会保存相邻两个Fragment,其他的则会销毁掉,导致我的Fragment一直新建,解决方法是: public class adapter extends原创 2016-01-11 16:43:57 · 610 阅读 · 0 评论 -
Android获取控件坐标,触摸点坐标 getX getRawX
MotionEvent.getRawY() 是触摸点相对于屏幕原点坐标(包括状态栏-显示中国移动那个栏)getY() 是相对于父控件的坐标getScrollY() 是指控件顶部划出去的距离 可以具体到某个控件状态栏高度获取:Rect frame = new Rect(); getWindow().getDecorView().getWind原创 2015-12-10 13:58:37 · 2248 阅读 · 0 评论 -
android开发路-bitmap转缓存输入流BufferedInputStream
我们往服务器上传图片时往往要对一个图片对象进行输入输出流的转化ByteArrayOutputStream baos = new ByteArrayOutputStream();//compress方法是把一个位图写到一个OutputStream中,参数一是位图对象,二是格式,三是压缩的质量,四是输出流newimage.compress(Bitmap.CompressFormat.JPE原创 2015-04-21 14:51:53 · 2815 阅读 · 0 评论 -
View相关知识笔记
View android.view.LayoutInflater.inflate(int resource,ViewGroup root,boolean attachToRoot)1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。2. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,原创 2016-02-23 14:31:16 · 412 阅读 · 0 评论 -
Android 笔记
requestDisallowInterceptTouchEvent(true); 父控件不拦截自己的焦点原创 2015-12-11 13:49:33 · 465 阅读 · 0 评论 -
三角函数
radius * Math.cos(Math.toRadians(angle))公式得出的是角angle在圆上对应点a在坐标轴的X水平距离 ,其中angle是角度 需转换成弧度计算 (angle*PI/180)Math.asin(y / Math.hypot(x, y)) * 180 / Math.PI;xy是圆上的点,该公式是求出以圆的为坐标 xy形成的角度,其中公式as原创 2016-04-14 09:44:02 · 1962 阅读 · 0 评论 -
Studio NDK(Jni)学习
1.编写C文件2.编译生成.h文件 cmd命令进入项目的 com.xxx.xxx/src/ 目录下 cmd命令 :java -h com.xxx.xxx.xxxClass(jni的调用类)3.编写.c文件4.编写Android.mk文件(网上copy即可)5.java调用C方法(记得看lib是否生成.so文件)注意上面要NDK环境Studio 环境下NDk用法(方法和上面一 aapt "finished with non-zero exit value 1"原创 2016-02-23 13:28:04 · 320 阅读 · 0 评论 -
Android new File初识-创建不出文件问题
写博客是为了做开发笔记,只为记录我的点滴,可能我的笔记会有错误的认识,如果误导大家的话见谅见谅,当然欢迎大神出来纠正。 最近开发中有这么一个需求:用户在拍照上传图片时,要将图片的缩略图和处理后的原图分别保存在本地规定的目录,因为很少接触本地储存所以也是误打误撞。File dir = new File(SD_PATH); dir.mkdirs()其中单执行new file并不会创建文件或文件原创 2015-08-06 10:30:22 · 22173 阅读 · 2 评论 -
Android获取数据时 浮点型整数位数值(超8位)过大导致科学计数法
今天在调接口时,有个实体变量A我定义float类型,当该变量的整数值超过8位的时候会出现科学计数法的情况 例如 19085161.59,显示成1.454654864E的情况本来可以用String类型接收该字段,但由于需要该数值做运算,所以想不改变原有类型一开始想过显示时通过 String.format("%." + m + "f", f);方式处理,数值比较时用原有数据,但想想以后其他数据如果要显...原创 2018-02-23 11:02:25 · 4941 阅读 · 0 评论 -
android开发路-设置EditText获取焦点
必须设置三个属性: EditText NumEdt = new EditText(); NumEdt .setFocusable(true);//允许获取焦点NumEdt .setFocusableInTouchMode(true);//触摸时能否获取焦点NumEdt .requestFocu原创 2015-04-21 14:11:04 · 676 阅读 · 0 评论