Android开发Tips(6)

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录.

《Android开发Tips(6)》 Android

本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html

《Android开发Tips(6)》 Android

介绍关于Android的一些有趣的小知识点. 本文是第六篇, 欢迎阅读.
其余第一篇, 第二篇, 第三篇, 第四篇, 第五篇.

1. 控件位置

获取控件四个角的位置.

《Android开发Tips(6)》 控件

代码

public static PointF getTopLeftCorner(View view) {
    float src[] = new float[8];
    float[] dst = new float[]{0, 0, view.getWidth(), 0, 0, view.getHeight(), view.getWidth(), view.getHeight()};
    view.getMatrix().mapPoints(src, dst);
    PointF cornerPoint = new PointF(view.getX() + src[0], view.getY() + src[1]);
    return cornerPoint;
}

public static PointF getTopRightCorner(View view) {
    float src[] = new float[8];
    float[] dst = new float[]{0, 0, view.getWidth(), 0, 0, view.getHeight(), view.getWidth(), view.getHeight()};
    view.getMatrix().mapPoints(src, dst);
    PointF cornerPoint = new PointF(view.getX() + src[2], view.getY() + src[3]);
    return cornerPoint;
}

public static PointF getBottomLeftCorner(View view) {
    float src[] = new float[8];
    float[] dst = new float[]{0, 0, view.getWidth(), 0, 0, view.getHeight(), view.getWidth(), view.getHeight()};
    view.getMatrix().mapPoints(src, dst);
    PointF cornerPoint = new PointF(view.getX() + src[4], view.getY() + src[5]);
    return cornerPoint;
}

public static PointF getBottomRightCorner(View view) {
    float src[] = new float[8];
    float[] dst = new float[]{0, 0, view.getWidth(), 0, 0, view.getHeight(), view.getWidth(), view.getHeight()};
    view.getMatrix().mapPoints(src, dst);
    PointF cornerPoint = new PointF(view.getX() + src[6], view.getY() + src[7]);
    return cornerPoint;
}

2. 异常Error:(216) Apostrophe not preceded by …

原因是字符串中包含单引号(), 导致, 添加转义符号即可.

<string name="hello_kotlin">Hello Kotlin, I\'m Spike! </string>

参考

3. Editable和String的转换

Editable是EditText使用的字符串格式. 与String可以相互转换.

Editable editable = new SpannableStringBuilder("Pass a string here");
String str = editable.toString();

参考

4. 设置WRAP_CONTENT和VERTICAL

在Kotlin中, 使用属性扩展时, 需要记住类.
WRAP_CONTENT属于LayoutParams, VERTICAL属于LinearLayout.

import android.widget.LinearLayout.LayoutParams
import android.widget.LinearLayout

layoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
orientation = LinearLayout.VERTICAL

5. 删除Commit

删除本地的Commit, 使用

git reset --hard HEAD~1

HEAD~1表示前1个, 可以自由设置数字.

参考

6. 标准的gitignore

这是标准的gitignore, 默认项目会生成, 旧的项目可能没有, 需要补充.

*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures

7. String转换16进制

DeviceID可能是字母, 会导致解析失败, 解析前需要转换String为16进制数.

    // String转换40位16进制, 防止DeviceID是字母, @Thx 秋爽&康康
    public String toHex(String arg) {
        return String.format("%040x", new BigInteger(1, arg.getBytes(/*YOUR_CHARSET?*/)));
    }

That’s all! Enjoy it!

    原文作者:SpikeKing
    原文地址: https://www.jianshu.com/p/605801933da4
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞