我正在创建一个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
我该如何收听图像真正显示给用户的事件?名称的实际效果是我想要的,但是可以看到大多数照片在可见之前被切换了