某日,在群里面日常潜水,看到他们在探讨一些问题的时候,很是感慨,竟然能够忽然这么氛围浓厚… …
于是,一种写点什么的感觉油然而生。
在AS中导入.so文件
情景:
群里L兄换工作,面试问题:(大概)如何导入.so文件,使用哪几种so库就可以兼容全部机型?
群里W兄给了如下链接
原文
- 在Moudle根目录创建lids文件夹;
- 将.so文件放入其内;
- 在build.gradle配置如下:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
- 关于兼容
群里L兄说:“so的兼容 正常来说是7中cpu架构 考虑到app体积 一般兼容 armeabi和 armeabi-v7a。
引入so 的话 现在一般用 cmake的方式
通过CMakeLists.txt 文件来控制 .cpp文件和so文件的关联
.cpp 通过方法名 来关联 java的native方法
网上的方法都是eclipse里的老方法了 as自从2.2后就支持原生jni的编写了”
因为有点难懂,但我还是将其摘出来,囤积囤积。
armeabi和armeabi-v7a皆创建在libs中,.so都挨个导一次。
关于armeabi和armeabi-v7a,我以为是用来兼容的,找了个看起来比较简洁易懂的链接:
极客公园
- 放在libs下有时会和一同引入的jar冲突,放在main层级下的jniLibs,会自动引用,从而避免冲突。
设置文字不随系统字体大小变化
情景:
群里Z兄的领导老花眼,想让APP字体变大点,然后… …
-
在代码中设置字体大小时,同时将字体大小的单位设置了dp,就可以固定字体大小不随系统设定的字号变化了。
我们在xml中设置大小时单位通常是dp;而在代码中设置大小时setTextSize(25)里面却是sp;setTextSize(TypedValue.COMPLEX_UNIT_DIP,25)即可在代码中设置为dp的值。- dp和dip的关系 异同于 fill parent跟 match parent的关系。
-
重写getResources方法
@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config=new Configuration();
config.setToDefaults();
res.updateConfiguration(config,res.getDisplayMetrics());
return res;
}
AndroidStudio 不显示Log(华为)
情景:
真机(华为,型号HONOR H30-L01,4.4.2)测试的时候,自己打印的Log无法正常显示。
解决:
-
在手机的拨号界面输入
*#*#2846579#*#*
-
进入projectmenu
-
在Log设置里面进行设置
对蓝牙发来的0-255的数据我们在这边接收的时候需要转成int类型:
int int_ = byte & 0xFF
一些新的关于适配的小Tips
- ConstraintLayout +dp
- 用start end 取代 left right
RecyclerView中删除条目使用notifyDataSetChanged();无法做到及时刷新
- 在多次查找和测试后发现我的remove();方法中放的是类似list.get(i)的值,改为具体的int值后,就可以正常刷新;
- 这个类似指的是任何经过遍历的值直接放在remove();中的操作;
- 可知remove();中只能放int类型的值而非一个int类型的对象;
Android正确关闭线程
一个百度地图问题
loadExceptionjava.lang.UnsatisfiedLinkError: dlopen failed: “/data/data/com.zoommax.car/files/libs/libBaiduMapSDK_base_v4_2_1.so” is 32-bit instead of 64-bit
如果还是不行的话,可能需要到官网下个demo重新弄sdk,还有就是务必用真机测试。
- PS:还是高德好用= =
Android9.0明文通信
出处
res —> 新建先xml文件夹 —> 创建network_security_config.xml —> 如下代码:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
—> 再在AndroidManifest,application标签中加入:
android:networkSecurityConfig="@xml/network_security_config"
修改Bitmap图片的大小
public static Bitmap imageScale(Bitmap bitmap, int dst_w, int dst_h) {
int src_w = bitmap.getWidth();
int src_h = bitmap.getHeight();
float scale_w = ((float) dst_w) / src_w;
float scale_h = ((float) dst_h) / src_h;
Matrix matrix = new Matrix();
matrix.postScale(scale_w, scale_h);
Bitmap dstbmp = Bitmap.createBitmap(bitmap, 0, 0, src_w, src_h, matrix,
true);
return dstbmp;
}
适配阿拉伯语出现布局重叠的问题
- 将Left/Right替换成Start/End。
4.2之后,Google在Android中引入了RTL布局,Start/End更好兼容RTL - 其他出现问题处理
解决Github打不开问题
获取分辨率和DPI
摘自
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
// 屏幕宽度(像素)
int width = metric.widthPixels;
// 屏幕高度(像素)
int height = metric.heightPixels;
// 屏幕密度(1.0 / 1.5 / 2.0)
float density = metric.density;
// 屏幕密度DPI(160 / 240 / 320)
int densityDpi = metric.densityDpi;
String info =
"\n设备型号: " + android.os.Build.MODEL +
“\nSDK版本:” + android.os.Build.VERSION.SDK +
“\n系统版本:” + android.os.Build.VERSION.RELEASE +
"\n屏幕宽度(像素): " + width +
"\n屏幕高度(像素): " + height +
"\n屏幕密度: " + density +
"\n屏幕密度DPI: " + densityDpi;
Log.d(“看看”, info);
鸿蒙深色应用出现深色Title
- Theme.AppCompat.Light.NoActionBar
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
Unresolved reference: DefaultLifecycleObserver
- 如果是java 8的话,需要在build文件添加
implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1"