zoukankan      html  css  js  c++  java
  • Android 开发常用工具合集

    在 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/
  • 相关阅读:
    tp-link便携式路由器固件升级方式
    awk改变了OFS,$0却没变化
    RBAC设计前期设计
    微信小程序获取普通二维码
    微信小程序获取请求数据
    微信小程序获取二维码API
    php之策略模式
    php之简单工厂模式
    数据库转换微信菜单
    实现微信公众号平台菜单功能
  • 原文地址:https://www.cnblogs.com/yjq520/p/10837266.html
Copyright © 2011-2022 走看看