
Android
崔星星
将来的你一定会感谢现在奋斗的你
展开
-
No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier;
问题背景:由于使用了宜搭平台作为后台数据存储的地方,而调用宜搭的接口要接入其sdk。但是其xxpt.gateway.shared.client-1.1.4.aar包使用了HttpClient来实现网络访问的,但是在android9时HttpClient被完全移除了,但是这个类还在sdk中而且还基本内容都被删除了:package org.apache.http.conn.ssl;/** * The ALLOW_ALL HostnameVerifier essentially turns hostn原创 2021-11-04 23:50:52 · 4919 阅读 · 2 评论 -
app与html交互方式
html 向native传递数据1:自定义scheme方式,在app端对应的方法拦截url判断是否应该处理;2:通过html调用alert、confirm、prompt方法,native拦截方法并重写逻辑3:通过定义jsBrige方式(android),JS注入对象(iOS),html调用相关方法native向html传递数据1: android通过evaluateJavascript,ios通过stringByEvaluatingJavaScriptFromString调用js方法及获.原创 2021-10-13 22:31:13 · 573 阅读 · 0 评论 -
Android自定义字母索引View
代码:import android.content.Contextimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Paintimport android.util.AttributeSetimport android.view.MotionEventimport android.view.MotionEvent.*import android.view.Viewimpor原创 2021-10-13 22:18:24 · 178 阅读 · 0 评论 -
adb导出anr文件Permission问题解决
导出android的anr文件直接使用adb pull命令时可能会遇到permission deny问题:adb: error: failed to copy ‘/data/anr/anr_2021-09-16-11-09-18-309’ to ‘./anr_2021-09-16-11-09-18-309’: remote open failed: Permission denied可通过:adb bugreport ~/desktop/命令导出bug压缩包,然后解压缩就可以拿到日志了。..原创 2021-09-16 11:57:06 · 1683 阅读 · 0 评论 -
c语言生成Android的smallestWidth适配文件
mac执行文件:下载链接执行文件生成:file.out 375 360 384 392 400 410 411 432 480 533 592 600 640 662 720 768 800 811 820 960 1024 1280 1365代码(需要时可自行修改dp及sp范围): #include<stdio.h>#include<stdlib.h>#include<string.h>#include <sys/stat.h>#原创 2021-09-14 09:09:17 · 140 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: javax/activation/MimeTypeParseException问题解决
最近在构建打包的时候报了这个错误:java.lang.NoClassDefFoundError: javax/activation/MimeTypeParseException;原因:替换了jdk导致的,原本是使用的自己配置的jdk环境,后来换成了studio自带的jdk,两个版本不同自带的应该是剔除了这些类的。解决方法:1.替换回原来的jdk路径;2.把相关依赖添加进来:compile "javax.xml.bind:jaxb-api:2.3.0"compile "javax.activ原创 2021-08-03 09:43:38 · 4613 阅读 · 0 评论 -
EventBus简化
仿EventBus写的事件总线工具,主要由MyEventBus实现事件订阅post等逻辑,其他EventBusException、Subscribe、SubscriberMethod、ThreadMode直接从EventBus拿来用的。实现:MyEventBus代码:package com.david.core.event;import android.os.Bundle;import android.os.Handler;import android.os.Looper;原创 2021-07-26 20:45:55 · 134 阅读 · 0 评论 -
ViewStub详解
首先上源码:package android.view;import android.annotation.IdRes;import android.annotation.LayoutRes;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.util.AttributeSet;import android.widg原创 2021-04-25 17:40:22 · 853 阅读 · 0 评论 -
Android竖屏界面显示横向的view或dialog
1.通过view旋转实现;2.通过使用图片控件实现(让UI切横屏的图片放入需要的控件中);3.使用canvas自己绘制控件,自己实现操控事件;原创 2021-03-07 18:32:10 · 1624 阅读 · 0 评论 -
android的native请求与本地html请求时间对比
接口数据大小52knative使用retrofit+rxjava框架:第一次:耗时:350ms第二次:耗时:341ms第三次:耗时:324ms第四次:耗时:450ms第五次:耗时:487ms第六次:耗时:451ms第七次:耗时:361ms第八次:耗时:340ms第九次:耗时:412ms第十次:耗时:501ms平均:401.7msassets中的html使用原生ajax请求同一接口:第一次:耗时:410ms第二次:耗时:662ms第三次:耗时:43原创 2021-02-24 15:30:39 · 203 阅读 · 0 评论 -
Dialog去掉默认白色背景
问题:自定义的dialog在布局中设置了背景,但是底部一直有白色的一层背景,实际为dialog中mWindow的背景。解决方法:在自定义dialog的构造方法中添加下面代码即可:getWindow().setBackgroundDrawableResource(android.R.color.transparent);//去掉白色背景...原创 2021-01-11 16:38:02 · 2400 阅读 · 1 评论 -
一个简单的LruImageLoader
1.代码:/** * TODO 添加图片显示动画 * 加密图片加载及下载 * 使用示例: * //必须先调用init * LruImageLoader.getInstance().init(getApplication()); * * LruImageLoader.getInstance().loadCacheImage("https://pics2.baidu.com/feed/d043ad4bd11373f07cfedf093f1d9bfcfaed0479.jpeg?token=de1原创 2021-01-03 17:51:18 · 192 阅读 · 0 评论 -
PopupWindow在7.0以上版本showAsDropDown失效问题解决
解决方案:1.显示前设置固定高度为屏幕底部到控件距离:TextView title = findViewById(R.id.popup_title);int[] location = new int[2]; title.getLocationOnScreen(location); int x = location[0]; int y = location[1];原创 2020-12-01 14:46:04 · 841 阅读 · 0 评论 -
获取android设备statusBar高度
/** * 获取设备状态栏高度 */ private static int mStatusBarHeight; public static int getStatusBarHeight(Context context) { if (mStatusBarHeight > 0) { return mStatusBarHeight; } int statusBarHeight = 0;原创 2020-12-01 14:34:44 · 525 阅读 · 0 评论 -
RecyclerView实现Banner无限轮播
实现原理: 1到second last为实际数据,0跟last为banner自动填充的item,其中0中数据跟second last项数据相同,last跟1项数据相同。 当banner滑动(或者手动滑动)到0时,banner静默滚动到second last处(因为0跟second last图片相同所以用户无感知);当banner滑动到last时,ba原创 2020-10-15 09:56:38 · 1976 阅读 · 0 评论 -
kotlin判断对象是否初始化了
if (this::myObject.isInitialized) {//是否初始化过 //初始化过的逻辑}原创 2020-07-09 15:46:12 · 2812 阅读 · 0 评论 -
Android studio快捷键
It's happening now 键盘快捷键目录配置自定义按键映射 Android Studio 为许多常用操作提供了键盘快捷键。表 1 按操作系统显示了默认键盘快捷键。 ...原创 2019-10-24 10:35:17 · 438 阅读 · 0 评论 -
android性能优化工具
android性能优化工具:BlockCanarysutdio的lintStrictMode严格模式Hierarchy ViewerTraceView及一些第三方的工具检测原创 2019-10-16 10:12:56 · 154 阅读 · 0 评论 -
Android dip与px转换时的公式加0.5原因
首先转换公式: public static int dipToPx(int dip) { final DisplayMetrics displayMetrics = application.getResources().getDisplayMetrics(); return (int) (displayMetrics.density * dip + 0.5f);...原创 2019-10-16 10:01:22 · 665 阅读 · 0 评论 -
EditText自动获取焦点导致软键盘弹出问题修改
在布局中如果有EditText时会自动获取焦点,导致软键盘自动弹出。修改方法:xml中EditText的父布局添加属性: android:focusable="true" android:focusableInTouchMode="true"...原创 2019-10-16 09:46:12 · 335 阅读 · 0 评论 -
由scheme导致APP图标消失问题
通过html跳转APP时需设置scheme,在html中添加跳转: window.location.href = “cainiao://”; 但是在打包安装后出现了APP图标消失问题,是由于同一个intent-filter设置了多个category的原因,解决方法,分两个intent-filter即可: ...原创 2018-03-27 11:51:05 · 1671 阅读 · 0 评论 -
Lint found errors in the project; aborting build导致打包停止错误解决
今天在打包时的时候出现了这个错导致打包不成功,具体原因可以从报错日志中看到是因为studio检测到了lint错误,从而停止了打包。解决办法是在app下的build.gradle 文件的android节点下添加lintOptions{ abortOnError false }即可,即在检测到lint错误时还接续进行打包。7:00:55 :app:lint FAILED17:00:55 17:...原创 2018-10-26 21:40:15 · 12899 阅读 · 0 评论 -
Android将其他工程引入作为module开发
模块化开发的优势及缺点之前已经说过了:android模块化开发。现在来说说怎么引入其他模块及过程中遇到的问题:引入过程:一.直接引入其他工程作为新的module通过File->New->Import Module即可如果引入的是一个完整可打包的工程的话moduleName会与主Module重名导致:app不能被引入,改为其他名字即可。如果引入工程有其他module则也会如...原创 2019-03-18 23:21:39 · 1468 阅读 · 0 评论 -
Android布局优化
1.要减少布局嵌套: 复杂布局可以使用RelativeLayout或者GridLayout搞定;如果是简单布局则使用ViewGroup的使用优先级:FrameLayout>LinearLayut>RelativeLayout;对于自动换行的ViewGroup可以选择自定义布局。(个人写的自动换行布局:https://github.com/divaid/MyTest/blob/master/app/原创 2017-07-10 09:57:58 · 557 阅读 · 0 评论 -
android横竖屏切换
横竖屏切换方法: 1.自动切换: 1.通过在androidManifest.xml的activity节点添加screenOrientation属性://screenOrientation属性说明:unspecified:默认值,由系统决定;lands...原创 2019-03-22 22:05:45 · 8218 阅读 · 0 评论 -
gradle中compile、api、provided、implementation
一、gralde中compile,api,provided,implementation的区别:compile ‘com.android.support:appcompat-v7:23.4.0’provided ‘com.squareup.dagger:dagger-compiler:1.2.1’(网络下载)provided fileTree(include: ‘*.jar’, dir: ...原创 2019-06-27 10:48:33 · 9835 阅读 · 0 评论 -
View设置seletor失效问题
设置了ontouchlistener之后如果ontouch方法返回true,则不会走view的ontouchevnet方法,则不会走setpressed方法(功能为修改各种状态下的drawable)原创 2019-07-21 19:53:15 · 506 阅读 · 0 评论 -
Android判断是否安装某个应用
在代码中判断:一、可以通过获取某个应用信息并捕获未安装时的异常判断:private boolean checkAppInstalled(Context context,String pkgName) { if (pkgName== null || pkgName.isEmpty()) { return false } PackageInfo packag...原创 2018-10-15 09:52:14 · 20371 阅读 · 2 评论 -
Service Intent must be explicit错误
解决方案:使用隐式方式绑定:**1.在service中添加action:**<service android:name="your service" android:exported="true"> <intent-filter> <action android:name="you...原创 2018-10-12 22:12:02 · 508 阅读 · 0 评论 -
android5.06.0新控件
Android自5.0后增加了不少新控件,帮助开发者实现了更酷更炫的UI效果。可是对于初学者来说,这些新控件的用法不像老控件那么简单...转载 2018-09-13 14:37:49 · 435 阅读 · 0 评论 -
Android获取更多内存
在配置文件的在application元素上加入android:largeHeap=”true”就可以申请更大内存。查看app占用的内存大小可通过下面两种方式:方法一:使用ActivityManagerActivityManager的getMemoryClass()获得内用正常情况下内存的大小ActivityManager的getLargeMemoryClass()可以获得开启la...原创 2018-07-28 15:30:45 · 1026 阅读 · 0 评论 -
Android内存优化的个人理解
一 运行前: 1.首先应用的图片应该压缩一下: 个人喜欢使用的压缩网站:TinyPng。 比如原来应用图片有50k的,压缩过后可能只有10k左右,原来图片有8k的压缩过后可能只有1k,这就使图片占用的内 存更少了,应用也就更流畅了。2.只提供xhdpi与xxhdpi的图片即可: 因为现在的主流手机应该都是这两种分辨率了,因此只提供这两种分辨率的图片也够用了。3.对于原创 2017-07-10 08:29:27 · 880 阅读 · 1 评论 -
浅谈mvc、mvp、mvvm
开始前先说下使用背景的理解吧试想一下所有的逻辑网络请求、数据处理、数据填充都在一个Activity或者Fragment中肯定会导致逻辑非常混乱,单不说后期的维护迭代更新,只是业务理解肯定也会花费很长时间,这应该就是促使设计模式出现的原因,按照设计模式编写代码时一个是代码思路更加清晰,一个是后期优化更加方便。然后进入正题:1.MVC 首先定义:视图(View) View在And...原创 2018-06-15 21:55:10 · 1441 阅读 · 0 评论 -
Android studio instant run导致的classNotFoundException
Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.xcds.doormutual.MyApplication” on path: DexPathList[[zip file “/data/app/com.xcds.doormutual-1/base.apk”],nativeLibraryDirectories=[...原创 2018-06-11 18:19:07 · 577 阅读 · 0 评论 -
Android模块化开发
一、什么是模块化那么什么是模块化呢?《 Java 应用架构设计:模块化模式与 OSGi 》一书中对它的定义是:模块化是一种处理复杂系统分解为更好的可管理模块的方式。上面这种描述太过生涩难懂,不够直观。下面这种类比的方式则可能加容易理解。我们可以把软件看做是一辆汽车,开发一款软件的过程就是生产一辆汽车的过程。一辆汽车由车架、发动机、变数箱、车轮等一系列模块组成;同样,一款大型商业软件也是...原创 2018-06-11 11:41:05 · 420 阅读 · 0 评论 -
接入SopFix遇到的一些问题
原创 2018-05-09 09:34:05 · 741 阅读 · 0 评论 -
Android多进程
实现方式: 第一种形式如 android:process=”:remote”,以冒号开头,冒号后面的字符串原则上是可以随意指定的,为子进程名称。如果我们的包名为“com.example.processtest”,则实际的进程名为“com.example.processtest:remote”。这种设置形式表示该进程为当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中。在Androi...原创 2018-03-16 10:32:46 · 962 阅读 · 0 评论 -
Android7.0sdcard文件访问问题
解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()...转载 2018-03-02 09:53:33 · 13738 阅读 · 0 评论 -
Android studio terminal终端命令行显示不全
Android studio terminal 命令行显示不全: 解决方案:https://www.jianshu.com/p/7766ef789eef修改后显示正常了:原创 2018-01-29 17:51:22 · 2717 阅读 · 0 评论 -
Android混合开发js与native交互两种方式
html向native传递数据:重点内容一、使用window.prompt方式:首先在html页面添加prompt执行入口: prompt test 然后native中的WebChromeClient重写onJsPrompt方法(主要可以给html返回数据,如果没有返回数据使用onJsAlert,onJsConsole也可以实现交互)添加: @Override原创 2018-01-29 16:38:55 · 2006 阅读 · 0 评论