Android开发中的小积累

  • 获取Recycleview当前屏幕可见item,并且拿到任何一个可见item的view
int lastItemPosition=0;
int firstItemPosition = 0;
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
//判断是当前layoutManager是否为LinearLayoutManager
//只有LinearLayoutManager才有查找第一个和最后一个可见view位置的方法
if (layoutManager instanceof LinearLayoutManager) {
 LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;
//获取最后一个可见view的位置
lastItemPosition = linearManager.findLastVisibleItemPosition();
//获取第一个可见view的位置
firstItemPosition = linearManager.findFirstVisibleItemPosition();
                    }
//获取可见的任何item,记得要减掉firstItemPosition,因为item复用的问题,这个往往容易忽略,从而导致获取的view为空
 View view=recyclerView.getChildAt(i-firstItemPosition);
  • 获取view在屏幕中的位置
//这个方法是返回view在Y轴的位置,包括状态栏/标题栏等,是该view在整个屏幕中的位置
private int getY(View flagView) {
        int[] location = new int[2];
        flagView.getLocationOnScreen(location);
        int x = location[0];
        int y =location[1];
        return y;
    }
  • 获取状态栏的高度
private int getStatusHeight() {
        int statusBarHeight1 = -1;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            statusBarHeight1 = getResources().getDimensionPixelSize(resourceId);
        }
        return statusBarHeight1;

    }
  • .Java 中的精确运算:BigDecimal
    例如:
    System.out.println(0.06+0.01);
    输入结果是:0.06999999999999999, 而不是我们想要的0.7
    原因在于我们的计算机是二进制的。浮点数没有办法是用二进制进行精确表示。我们的CPU表示浮点数由两个部分组成:指数和尾数,这样的表示方法一般都会失去一定的精确度,有些浮点数运算也会产生一定的误差。如:2.4的二进制表示并非就是精确的2.4。反而最为接近的二进制表示是 2.3999999999999999。所以要用BigDecimal,以下是实例代码,两个数相乘:
 public static double mul(String value1, String value2) {
        BigDecimal b1 = new BigDecimal(value1);
        BigDecimal b2 = new BigDecimal(value2);
        return b1.multiply(b2).doubleValue();
    }

使用BigDecimal,但一定要用BigDecimal(String)构造器,而千万不要用
BigDecimal(double)来构造(也不能将float或double型转换成String再来使用BigDecimal(String)
来构造,因为在将float或double转换成String时精度已丢失)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值