关于 Android 小功能的实现

under Android  tag     Published on June 22nd , 2021 at 06:57 pm

1. android:digits 属性

限制用户的输入,只能输入包含在 digits 里的内容

<EditText
        // ...
        android:digits="qwertyuiopasdfghjklzxcvbnm"
        />

2. TextView 超过指定行数后显示省略号

<TextView
        // ...
        android:text="超过指定行数后显示省略号超过指定行数后显示省略号超过指定行数后显示省略号超过指定行数后显示省略号超过指定行数后显示省略号超过指定行数后显示省略号"
        android:ellipsize="end"
        android:lines="2"
        android:lineSpacingExtra="2dp"/>

3. 给控件添加阴影

<TextView
    // ...
    android:transformPivotX="2dp"
    android:elevation="2dp"
    />

4. Intent 用法

App 内跳转应用市场详情

// 打开手机应用市场,直接进入该程序的详细页面
Uri uri = Uri.parse("market://details?id=" + packageName);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

选择图片

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, requestCode);

5. 允许使用 Http

方法一

AndroidManifest.xml

<application
    // ...
    android:usesCleartextTraffic="true">
    <activity
        // ...
    </activity>
</application>

方法二

创建 xml 文件夹,在此文件夹下创建 network_security_config.xml 文件

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

AndroidManifest.xml

<application
    // ...
    android:networkSecurityConfig="@xml/network_security_config">
    <activity
        // ...
    </activity>
</application>

6. TextView 添加删除线

tv.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

7. RecyclerView 设置 item 之间的间距

https://www.jianshu.com/p/e372cec819db
文章 LinearLayoutManager 的辅助类中的 getChildPosition() 方法被弃用,建议使用 getChildAdapterPosition(View) 或者 getChildLayoutPosition(View)

8. 横屏竖屏

屏幕方向默认设置为:android:screenOrientation="unspecified",属性取值 landscape 为固定横屏、 portrait 为固定纵屏幕,在 AndroidManifest.xml 中设置

<manifest>
    <application
        // ...
        >
        <activity
            // ...
            android:screenOrientation="portrait"
         />
    </application>
</manifest>

9. ListView 隐藏 item 之间的分割线

lv.setDivider(null);

把新数据添加到列表末尾并滑动到末尾位置

lv.setSelection(dataList.size() - 1);
lv.smoothScrollToPosition(dataList.size() - 1);

10. 代码折叠

//region 标题
private String time;
private void method(){}
//endregion

快捷键

  1. 选取要折叠的代码
  2. 按下 Ctrl + Alt + T
  3. 选择下图中 region...endregion Comments

打开相册选择图片

/**19之后的系统相册的图片都存在于MediaStore数据库中;19之前的系统相册中可能包含不存在与数据库中的图片,所以如果是19之上的系统
* 跳转到19之前的系统相册选择了一张不存在与数据库中的图片,解析uri时就可能会出现null*/
if (Build.VERSION.SDK_INT < 19) {
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
} else {
    intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
}

11. 显示、隐藏密码

if (isVisible) {
    // 隐藏
    isVisible = false;
    iv_eye.setImageResource(R.mipmap.invisible);
    login_pwdet.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
    // 显示
    isVisible = true;
    iv_eye.setImageResource(R.mipmap.visible);
    login_pwdet.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}

12. 软键盘显示或隐藏,获取软键盘高度,监听软键盘

https://cloud.tencent.com/developer/article/1482136

补充:

  • android.R.id.content 提供视图的根元素,不必知道它的实际名称/类型/ ID。
  • getViewTreeObserver().addOnGlobalLayoutListener() 获取宽度和高度的方式之一。OnGlobalLayoutListener 是 ViewTreeObserver 的内部类,当一个视图树的布局发生改变时,可以被 ViewTreeObserver 监听到,这是一个注册监听视图树的观察者(observer),在视图树的全局事件改变时得到通知。
  • getWindowVisibleDisplayFrame() 用来获取当前窗口可视区域的大小。

本文由 surface 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:August 18th , 2021 at 05:33 pm
分享到:Twitter  Weibo  Facebook