最近公司的一个项目,项目需求是类似于微信的首页,展示一个短视频的列表通过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 这个方法触法不了,
|