|
最近公司的一个项目,项目需求是类似于微信的首页,展示一个短视频的列表通过listview 里面每个item由一个textureView作为视频播放控件,开始用的是videoview但是发现不能改变大小,滑动列表的时候会暂停播放。 |
|
40分 |
用TextureView + MediaPlayer实现,本身性能没有问题,看一下你的代码吧,可能是有的地方没写好
|
|
我知道是有些地方没写好,但是还没有找到原因啊,第一次接触多媒体类的开发,有点晕啊,请问您做过类似的么? public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
View firstItem = views.get(Integer
.valueOf(firstVisibleIndex));
View firstItem1 = views.get(Integer
.valueOf(firstVisibleIndex)+1);
if (scrollState == SCROLL_STATE_IDLE) {
if (firstItem != null) {
int[] location = new int[2];
firstItem.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
System.out.println("====== x: " + x + " y:" + y);
com.weishi.view.VideoPlayTextureView textureView = (VideoPlayTextureView) firstItem.findViewById(R.id.videoview);
ProgressBar loading=(ProgressBar) firstItem.findViewById(R.id.loading);
ImageView video=(ImageView) firstItem.findViewById(R.id.video_cover_default);
ImageView videoPlay=(ImageView) firstItem.findViewById(R.id.play_controller);
if (textureView.isAvailable()) {
textureView.prepare(list.get(3));//后续处理,标记
loading.setVisibility(View.GONE);
Log.e("position2", "______________+++++++"+Integer.valueOf(firstVisibleIndex));
video.setVisibility(View.GONE);
if (textureView.getMediaState()==MediaState.PLAY) {
}else {
textureView.play();
}
}
|
|
|
quote]
textureView.setSurfaceTextureListener(new SurfaceTextureListener() {
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
// TODO Auto-generated method stub
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,
int height) {
// TODO Auto-generated method stub
textureView.prepare(list.get(3));
textureView.play();;
}
});
[/code] |
|
|
楼主现在开发的怎么样了,我现在一个项目也是类似需求,也用了TextureView放在listView的item里面,但是TextureView好像没有加载,onSurfaceTextureAvailable方法触发不了,楼主找到原因了么。。
|
|
|
我的大致功能实现了。。TextureView要在一定条件下去展示;例如 if (textureView.isAvailable()) {
textureView.prepare(getPath(FileName));
loading.setVisibility(View.GONE);
video.setVisibility(View.GONE);
textureView.getMediaPlayer().setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.e("加入的mediaplayer","位置" + 0 + "mediaplayer"+ textureView.getMediaPlayer());
textureView.play();
videoPlay.setVisibility(View.GONE);
}
});
|
|
|
楼主,我最近也在学习类似的东西,看了你的帖子很感兴趣,不知道你的实现了没?能不能提供一份demo,非常感谢!
邮箱:452117490@qq.com |
|
|
求分享下demo
|
|
|
384719678@qq.com 求分享demo
|
|
|
可以分享一下你的Demo? 1556652327@qq.com 谢谢!
|
|
|
我的qq 841350309 有问题可以一起讨论
|
|
|
有问题 可以加微视讨论群 290087364 欢迎大家讨论
|
|
|
382496617@qq.com,求分享demo,已经卡住了快一星期了,求大神解救
|
|
|
447984537@qq.com 求大大分享 或者 加QQ 调教下小弟
|
|
|
LZ,请问能不能给个Demo,我现在做的 onSurfaceTextureAvailable 这个方法触法不了,
|
|