在 Android 开发中经常使用到的小功能,用于记录开发的那些事^_^

1. 获取 release 和 debug 版本的 SHA1

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);
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < publicKey.length; i++) {
String appendString = Integer.toHexString(0xFF & publicKey[i])
.toUpperCase(Locale.US);
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 e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}

2. 打开 APP 华为手机提示全屏显示

  在 AndroidManifest.xml 中的 Application 节点下添加如下代码:

<meta-data android:name="android.max_aspect" android:value="2.4" />

3. 保持屏幕常亮

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

通常会在一个 Activity 的 onResume() 和 onPause() 方法中分别调用这两个方法。

4. ListView 动态设置数据时高度自适应

package com.custom.ui.view;

import android.content.Context;
import android.widget.ListView; public class MyListView extends ListView { public MyListView(Context context) {
super(context);
} @Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int mExpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, mExpandSpec);
} }
<com.custom.ui.view.MyListView
android:id="@+id/lv_data"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:divider="@null"
android:listSelector="@color/transparent"/>

5. 防止 ListView 动态设置数据时数据过长自动滑动至 ListView 底部

android:descendantFocusability="blocksDescendants"

该属性是当一个为view获取焦点时,定义 ViewGroup 和其子控件两者之间的关系。
属性的值有三种:
beforeDescendants:ViewGroup 会优先其子类控件而获取到焦点
afterDescendants:ViewGroup 只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:ViewGroup 会覆盖子类控件而直接获得焦点

6. Android 强大的工具类推荐

https://blankj.com/2016/07/31/android-utils-code/

最新文章

  1. 【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
  2. java变量
  3. Protocol 编码的三种常用方式
  4. Mac 鼠须管 合并词库 简单使用
  5. hibernate.properties
  6. 树莓派 raspberry 入门之安装操作系统以及配置
  7. (int),Convert.ToInt32(),Int32.Parse(),Int32.TryParsed()的用法总结
  8. python 文件及文件夹操作
  9. ajax初学
  10. Android Studio和eclipse混淆打包总结
  11. Bootstrap里的文件分别表示什么?都有什么用?
  12. 生产者消费者C++实现
  13. 洛谷 P1393 P3157 动态逆序对
  14. 微信小程序 --- Cannot read property &#39;setData&#39; of null 解决
  15. The Designer (笛卡尔定理+韦达定理 || 圆的反演)
  16. 如何用Baas快速在腾讯云上开发小程序-系列4:实现客户侧商品列表、商品详情页程序
  17. user_agent
  18. jsp操作javabean
  19. Git的简单操作
  20. mongodb与mysql的区别与具体应用场景

热门文章

  1. curl 获取状态返回码
  2. Django-admin数据库记录展示调整
  3. Python itchat模块的使用,利用图灵机器人进行微信消息自动回复
  4. 剑指Offer(三十六):两个链表的第一个公共结点
  5. React中的State与Props
  6. 3.XPath
  7. Visual Studio 各版本对应关系
  8. [JSOI2015]最大公约数
  9. FasfDFS整合Java实现文件上传下载功能实例详解
  10. Django 第一天 开端