gpt4 book ai didi

android - 在翻转时获取 ViewFlipper 的当前 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:04 24 4
gpt4 key购买 nike

有什么方法可以知道 ViewFlipper 在翻转时显示想要的 View 吗?我有这个问题:我的 ViewFlipper 包含一些图像和一个视频。我希望当 viewflipper 显示带有视频的 Videoview 时,ViewFlipper 停止翻转并开始播放 Video。这仅在第一次显示视频时有效。之后,视频显示为图像,我不知道如何捕捉视频显示的时刻。任何人都可以帮助我吗?

这是我填充 ViewFlipper 的方式:

private void populate() {
for (int i = 0; i < jArray.length(); i++) {
System.out.println("lungime " + jArray.length());
LinearLayout l = new LinearLayout(this);
l.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
l.setBackgroundColor(0x000000);
l.setOrientation(LinearLayout.VERTICAL);
vf.addView(l);

File f = new File(Environment.getExternalStorageDirectory()
+ "/Images" + "/");

File[] files = f.listFiles();

if (files[i].getName().equals("Video" + idPhotos[i])) {
System.out.println("Video to Viewflipper");
System.out.println("Video Path " + files[i].getPath());
myVideoView = new VideoView(this);
myVideoView.setVideoPath(files[i].getPath());
myVideoView.requestFocus();
myVideoView.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
l.setBackgroundColor(Color.BLACK);
myVideoView.setKeepScreenOn(true);

myVideoView.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
vf.stopFlipping();
}

});
myVideoView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
downXValue = event.getX();
break;
}

case MotionEvent.ACTION_UP: {
currentX = event.getX();
if (downXValue == currentX) {
Intent intent = new Intent(getBaseContext(),
FinActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
}
return true;
}

});

myVideoView
.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
vf.startFlipping();
}
});

vf.stopFlipping();
myVideoView.start();
myVideoView.setId(i);
l.addView(myVideoView);
l.setId(i);
}

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 3;
options.inPurgeable = true;

bitmap = BitmapFactory.decodeFile(files[i].getPath());
img = new ImageView(this);
img.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));

img.setImageBitmap(bitmap);
img.setOnTouchListener(this);
l.addView(img);
l.setId(i);
img = null;
}
}

在 onCreate() 方法上我有这个:

if (ff.exists() && (files.length == jArray.length())) {     
populate();
vf.setOutAnimation(AnimationUtils.loadAnimation(
getBaseContext(), R.anim.push_left_out));
vf.setInAnimation(AnimationUtils.loadAnimation(
getBaseContext(), R.anim.push_left_in));
vf.startFlipping();
}

(我一次只调用一次 populate() 方法,也许这就是问题所在)

欢迎任何想法。提前致谢。

最佳答案

我不确定这是否有效,但值得一试。

将动画监听器添加到您设置为取景器的“IN”动画的动画对象。覆盖监听器的 onAnimationEnd 方法,并在该方法内部检查

vf.getDisplayedChild();

以上代码将给出当前显示的 child 的索引。因此,如果它在视频 View 中,您可以停止翻转并播放视频。

关于android - 在翻转时获取 ViewFlipper 的当前 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com