package com.letv.watchball.view; import java.util.List; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.RelativeLayout; import com.letv.android.slidingmenu.lib.CustomViewAbove; import com.letv.watchball.R; import com.letv.watchball.utils.UIs; public class LetvGalleryFocusView extends RelativeLayout { /** * 焦点图控件 * */ private LetvGallery gallery; /** * 焦点图控件 * */ private CircleGalleryIndicator galleryIndicator; private List<?> list; private Context context; private ViewPager pager; private ListView listView; public interface ChannelFocusViewListener { public void showFocusView();// } public LetvGalleryFocusView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.context = context; init(); } public LetvGalleryFocusView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; init(); } public LetvGalleryFocusView(Context context) { super(context); this.context = context; init(); } /** * 当前View是否可见 * * @return */ public boolean isThisViewVisible() { if (list != null && list.size() > 0) { return true; } else { return false; } } /** * @param list * @param adapter */ public void setFocusInitData(List<?> list, BaseAdapter adapter) { if (list != null && list.size() > 0 && adapter != null) { try { this.list = list; int size = list.size(); gallery.setAdapter(adapter); galleryIndicator.setViewFlow(gallery); galleryIndicator.setTotle(size); gallery.startMove(true, 5000); } catch (Exception e) { e.printStackTrace(); } } } /** * 设置更新数据 * * @param list */ public void setFocusInitData(List<?> list) { if (list != null && list.size() > 0) { try { this.list = list; int size = list.size(); galleryIndicator.setTotle(size); } catch (Exception e) { e.printStackTrace(); } } } /** * 为了拦截viewPager左右滑动事件,设置当前viewPager * * @param viewPager */ public void setViewPager(ViewPager viewPager) { this.pager = viewPager; gallery.setViewPager(viewPager); } /** * 为了拦截listView滑动事件,设置当前listView * * @param listView */ public void setListView(ListView listView) { this.listView = listView; // gallery.setListView(listView); } /** * 释放资源 */ public void destroy() { galleryIndicator = null; if (gallery != null) { gallery = null; } if (list != null) { list.clear(); list = null; } } /** * 开始移动 */ public void startMove() { if (gallery != null) { gallery.startMove(true, 5000); } } /** * 暂停移动 */ public void stopRemove() { if (gallery != null) { gallery.stopMove(); } } // ======================================================================================= // ======================================================================================= protected void init() { inflate(context, R.layout.home_tope_gallery_layout, this); findView(); } public void setFocusHeight(int height) { LetvGallery gallery = (LetvGallery) findViewById(R.id.top_gallery); ViewGroup group = (ViewGroup) gallery.getParent(); // View frameLayout = findViewById(R.id.channel_framelayout); FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT); RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, UIs.dipToPx(height)); group.setLayoutParams(rlp); gallery.setLayoutParams(flp); } // ======================================================================================= // ======================================================================================= @Override public boolean onInterceptTouchEvent(MotionEvent ev) { // 屏蔽viewpager、listView页面切换 switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; case MotionEvent.ACTION_UP: if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_CANCEL: if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_MOVE: if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; } return super.onInterceptTouchEvent(ev);// gallery.onInterceptTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent ev) { // 屏蔽viewpager、listView页面切换 switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: CustomViewAbove.mEnabled = false;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; case MotionEvent.ACTION_UP: CustomViewAbove.mEnabled = true;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_CANCEL: CustomViewAbove.mEnabled = true;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_MOVE: CustomViewAbove.mEnabled = false;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; } return super.onTouchEvent(ev);// gallery.onTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // 屏蔽viewpager、listView页面切换 switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: CustomViewAbove.mEnabled = false;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; case MotionEvent.ACTION_UP: CustomViewAbove.mEnabled = true;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_CANCEL: CustomViewAbove.mEnabled = true;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(false); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(false); // } break; case MotionEvent.ACTION_MOVE: CustomViewAbove.mEnabled = false;// 控制焦点图滑动不移动大空间 if (null != pager) { pager.requestDisallowInterceptTouchEvent(true); } // if (null != listView) { // listView.requestDisallowInterceptTouchEvent(true); // } break; } return super.dispatchTouchEvent(ev);// gallery.dispatchTouchEvent(ev); } protected void findView() { gallery = (LetvGallery) findViewById(R.id.top_gallery); galleryIndicator = (CircleGalleryIndicator) findViewById(R.id.top_gallery_indicator); } }