1.过度绘制
绘制颜色的标识,从好到差:蓝色(1x次绘制) –> 浅绿色(2x绘制) –> 淡红色(3x绘制) –> 红色(4x绘制)。
2.glide 获取缓存图片并存储
new Thread(new Runnable() {
@Override
public void run() {
try {
File file = Glide.with(XxqApplication.mContext)
.load(avatar)
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
.get();
Log.d(TAG, "run: ");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}}).start();
private class SaveImageTask extends AsyncTask<String, Void, File> {
private final Context context;
public SaveImageTask(Context context) {
this.context = context;
}
@Override
protected File doInBackground(String... params) {
String imgUrl = params[0];
try {
return
} catch (Exception ex) {
return null;
}
}
@Override
protected void onPostExecute(File result) {
if (result == null) {
return;
}
//此path就是对应文件的缓存路径
String path = result.getPath();
//将缓存文件copy, 命名为图片格式文件
copyFile(path, newPath);
}}
/*** oldPath: 图片缓存的路径
* newPath: 图片缓存copy的路径
*/
public static void copyFile(String oldPath, String newPath) {
try {
int byteRead;
File oldFile = new File(oldPath);
if (oldFile.exists()) {
InputStream inStream = new FileInputStream(oldPath);
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
while ( (byteRead = inStream.read(buffer)) != -1) {
fs.write(buffer, 0, byteRead);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制文件操作出错");
e.printStackTrace();
}}
3.华为荣耀6plus不能打印日志的问题
拨号界面:##2846579##
工程菜单->后台设置->Log设置->选择第一个AP日志
ok了,重启应用就可以了,不需要重启手机。
4.TextView的旋转问题
我之前开发遇到一个问题,teamLeader让把一个页面的的展示变成斜着的,我之前知道有这种功能但是不知道怎么实现,后来到网上找了一些,然后看了一下,都是要重写TextView的方法才能实现,后来发现textView有一个属性就是可以做旋转的,当当当,rotation闪亮登场了,没错他就是旋转,只要在xml中设置就可以了。
5.命令安装App
进去apk所在目录下,shift+鼠标右键–>选择“在此处打开命令窗口”,输入:“adb install -r ”把文件拖入,完成。
可能出现的问题,adb不是命令,在环境变量自己的用户变量中配置环境变量:配置为sdk下的\platform-tools
F:\ProgramFiles\Android\AndroidStudio_SDK\AndroidStudio_green\platform-tools
6.androidStudio遇到more than one library with package name‘com.xxx.xx’
错误原因是‘com.xxx.xx’被多引用了,引用超过一次。
我遇到的情况是,app中引用了相同的arr包报错,找了好久才知道。
7.直接打开微信的扫一扫
今天看到了一个博客,发现一个可以打开微信二维码的纪录,想看原文在这里
代码如下
public static void toWeChatScanDirect(Context context) {
try {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.LauncherUI"));
intent.putExtra("LauncherUI.From.Scaner.Shortcut", true);
intent.setFlags(335544320);
intent.setAction("android.intent.action.VIEW");
context.startActivity(intent);
} catch (Exception e) {
}
}
8.判断app的SHA1的值是否正确,一般用作高德或百度地图的判断
直接上代码
/**
* 获取应用的 SHA1 值, 可据此判断高德,百度地图 key 是否正确
*
* @param context 上下文
* @return 应用的 SHA1 字符串, 比如: 53:FD:54:DC:19:0F:11:AC:B5:22:9E:F1:1A:68:88:1B:8B:E8:54:42
*/
public static String getSHA1(Context context) {
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(), PackageManager.GET_SIGNATURES);
byte[] cert = info.signatures[0].toByteArray();
MessageDigest md = MessageDigest.getInstance("SHA1");
byte[] publicKey = md.digest(cert);
StringBuilder hexString = new StringBuilder();
for (byte aPublicKey : publicKey) {
String appendString = Integer.toHexString(0xFF & aPublicKey).toUpperCase();
if (appendString.length() == 1)
hexString.append("0");
hexString.append(appendString);
hexString.append(":");
}
String result = hexString.toString();
return result.substring(0, result.length() - 1);
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}