80,351
社区成员
发帖
与我相关
我的任务
分享
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;
}
}
}