什么?你还在用visible和gone来控制View的显示与隐藏?

    今天,在搞项目的时候遇到个小问题,我要在地图点击一个点,然后底部弹出一个信息窗,是的就是这么简单。但是我毕竟是个彩笔,所以遇到问题了,如果我把布局中的view先gone,然后在点击事件中visible出来,第一次会导致我的平移动画不执行,之后就正常了,这让我hin不爽,所以就自己想了个办法,来规避使用visible和gone这个比较low的方式,废话不多说,直接上方法。


第一步:记得加个flag判定是不是第一次加载这个控件,否则再次加载后也走这个方法,然后...就消失了再次。

/**
 * 监听控件,如果完成绘制,就根据获取到的高度,把控件通过Y轴移动到屏幕下方。
 */
rlDeviceInfo.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if(firstLoad){
            rlDeviceInfo.setTranslationY(rlDeviceInfo.getHeight());
            firstLoad = false;
        }
    }
});

第二步:动画代码,正常执行。

/**
 * 设备信息动画
 */
public void showDeviceInfoAnimation(View view, boolean isShow) {
    if (isShow) {
        float height = rlDeviceInfo.getHeight();
        ObjectAnimator animator = ObjectAnimator.ofFloat(rlDeviceInfo, "translationY", height, 0);
        animator.setDuration(1000);
        animator.start();
    } else {
        float height = rlDeviceInfo.getHeight();
        LogUtils.e("view窗口的height值: ---> " + height);
        ObjectAnimator animator = ObjectAnimator.ofFloat(rlDeviceInfo, "translationY", 0, height);
        animator.setDuration(1000);
        animator.start();
    }
其实问题倒不是很大,就是怕以后自己忘记,重走老路耽误时间精力,所以记下来,也方便其他朋友使用。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值