Android监听器imageview有效绘制

时间:2019-07-15 05:28:10

标签: android android-layout android-animation

我正在创建一个Android应用,以便人们从集合(抽奖)中绘制姓名。

我想创建一个动画,在按下按钮后,应用程序会在名称之间随机显示,并短时间显示它们(带有照片),以替换下一个并持续播放(如抽奖效果)

对于NAMES效果很好,我遇到的问题是图像

我要做的是:

 final View drawingView = LayoutInflater.from(this).inflate(R.layout.winner_inspect_layout, null);
        new AlertDialog.Builder(this).setView(drawingView).show();

        final AppCompatImageView ivPhoto = drawingView.findViewById(R.id.winnerPhoto);
        final AppCompatTextView txName = drawingView.findViewById(R.id.winnerName);
        final AppCompatTextView txComment = drawingView.findViewById(R.id.winnerComment);


        ivPhoto.getViewTreeObserver().addOnGlobalLayoutListener(new Puzzler(ivPhoto, txName, txComment, validTickets, 6000));
        ivPhoto.forceLayout();

Puzzler会这样做:

 @Override
        public void onGlobalLayout() {
            Comment ticket = this.tickets.poll();
            this.txName.setText(ticket.getId() + "");
            this.txComment.setText(ticket.getText());

            Picasso.get().load(ticket.getProfilePhotoUrl()).fit().into(this.ivPhoto);

            if (System.currentTimeMillis() - this.startTime > this.maxTime || this.tickets.isEmpty()) {
                ivPhoto.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                annouceWinner(ivPhoto);
            }

        }

所以我确实在imageview上监视全局布局,希望在整个图像变得可见之后会调用该方法。...但实际上发生的是在图像可见之前调用了该方法...所以它可以看到名称彼此切换,但是在整个过程中图像只能看到1或2 ...

我制作了一个非常短的视频,展示了效果(请花15秒钟观看)
https://youtu.be/nxykGdBwIeM

我该如何收听图像真正显示给用户的事件?名称的实际效果是我想要的,但是可以看到大多数照片在可见之前被切换了

0 个答案:

没有答案