微视,美拍,搜狐视频,微信在屏幕中播放规则?

tanranran 2014-11-21 05:15:47
和微视,美拍一样,需要当前Item大部分在手机屏幕中的时候播放视频,其他暂停

如图
...全文
558 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
海绵宝宝_ 2014-11-21
  • 打赏
  • 举报
回复
已经解决,非常感谢EOE的哪个帖子
package com.baidu.bvideoviewsample1;

import java.util.HashMap;
import java.util.Map;




import com.baidu.bvideoviewsample1.PlayView.onPlayerCreated;

import android.app.ListActivity;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class List17 extends ListActivity  {
	private LayoutInflater inflater;
	private int vHeight;
	private MyAdapter adatper;
	private int firstVisibleIndex;
	private Map<Integer, View> views = new HashMap<Integer, View>();
	// 改成你自己的手机屏幕像素
	private int screenHeight = 1920;
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		inflater = LayoutInflater.from(this);
		vHeight = DensityUtil.dip2px(this, 400); 
		adatper = new MyAdapter();
		setListAdapter(adatper);
		getListView().setTextFilterEnabled(true);
		getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		getListView().setItemChecked(0, true);
		getListView().setOnScrollListener(new OnScrollListener() {
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				if (scrollState == SCROLL_STATE_IDLE) {
					View firstItem1 = views.get(Integer.valueOf(firstVisibleIndex));
					if (firstItem1 != null) {
						int[] location = new int[2];
						firstItem1.getLocationOnScreen(location);
						int x = location[0];
						int y = location[1];
						if (isItemViewLittleVisible(y)) {
							getListView().setItemChecked(firstVisibleIndex,true);
							PlayView pl=(PlayView) firstItem1.findViewById(R.id.play_view);
							pl.start();
						} else {
							PlayView pl=(PlayView) firstItem1.findViewById(R.id.play_view);
							pl.stop();
							getListView().setItemChecked(firstVisibleIndex ,false);
							getListView().setItemChecked(firstVisibleIndex + 1,true);
							PlayView p2=(PlayView)  views.get(Integer.valueOf(firstVisibleIndex+1)).findViewById(R.id.play_view);
							p2.start();
						}
					}
					views.clear();//此处必须清楚之前的view,因为之前保存的view 以前不是现在展示的view了,第二个及时清空map,因为保存也没有意义了。
				}
			}
			public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
				firstVisibleIndex = firstVisibleItem;
			}
		});
	}
	// item 大部分区域不可见,此处约为3/5不可见
	private boolean isItemViewLittleVisible(int itemY) {
		return (vHeight + itemY) > vHeight / 5 *4 && itemY < screenHeight ? true: false;
	}
	private String[] mStrings = new String[] { "111", "111", "111", "111",
			"111", "111", "111", "111", "111", "111", "111", "111", "111",
			"111", "111", "111", "111", "111", "111", "111", "111", "111" };
	class MyAdapter extends BaseAdapter {
		public int getCount() {
			return mStrings.length;
		}
		public Object getItem(int position) {
			return mStrings[position];
		}
		public long getItemId(int position) {
			return position;
		}
		public View getView(int position, View convertView, ViewGroup parent) {
			final ViewHolder holder;
			if (convertView == null) {
				convertView = inflater.inflate(R.layout.item_test, null);
				holder = new ViewHolder();
				holder.play_view = (PlayView) convertView.findViewById(R.id.play_view);
				holder.btn1 = (Button) convertView.findViewById(R.id.button1);
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			if (!views.containsKey(Integer.valueOf(position))) {
				views.put(Integer.valueOf(position), convertView);
			}
			holder.position = position;
			return convertView;
		}

		class ViewHolder {
			public PlayView play_view;
			public Button btn1;
			public int position;

		}

	}
}
海绵宝宝_ 2014-11-21
  • 打赏
  • 举报
回复
eoe的这个帖子我看了,,,有点问题...http://www.eoeandroid.com/thread-495020-1-1.html

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧