listview viewpage 圆点切换,定时。

来源:互联网 发布:淘宝定制产品如何发布 编辑:程序博客网 时间:2024/06/07 17:40

自定义MyListView  

public class MyListView extends ListView {private GestureDetector mGestureDetector;View.OnTouchListener mGestureListener;public MyListView(Context context) {super(context);}public MyListView(Context context, AttributeSet attrs) {super(context, attrs);mGestureDetector = new GestureDetector(new YScrollDetector());setFadingEdgeLength(0);}public MyListView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return super.onInterceptTouchEvent(ev)&& mGestureDetector.onTouchEvent(ev);}class YScrollDetector extends SimpleOnGestureListener {@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2,float distanceX, float distanceY) {if (distanceY != 0 && distanceX != 0) {}if (Math.abs(distanceY) >= Math.abs(distanceX)) {return true;}return false;}}}

public class MainActivity extends Activity {private ViewPager guidePages;private ScheduledExecutorService scheduledExecutorService;private int currentItem;private ArrayList<View> viewList = new ArrayList<View>();private ImageView[] imageViews;private LinearLayout viewGroup;private View header;private MyListView listview;private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {guidePages.setCurrentItem(currentItem);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {// TODO Auto-generated method stubheader = LayoutInflater.from(this).inflate(R.layout.viewpage_header,null);guidePages = (ViewPager) header.findViewById(R.id.guidePages);viewGroup = (LinearLayout) header.findViewById(R.id.viewGroup);listview = (MyListView) findViewById(R.id.mylistview);listview.addHeaderView(header);guidePages.setOnPageChangeListener(new NavigationPageChangeListener());ArrayList arrayList = new ArrayList();for(int i=0;i<10;i++){arrayList.add("测试"+i);}ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,arrayList);listview.setAdapter(adapter);fillGuanggao(arrayList);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public void fillGuanggao(ArrayList arrayList) {for (int i = 0; i < arrayList.size(); i++) {ImageView iv = new ImageView(this);iv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));iv.setBackgroundResource(R.drawable.ic_launcher);iv.setScaleType(ImageView.ScaleType.FIT_XY);viewList.add(iv);}guidePages.setAdapter(new MyViewPagerAdapter(viewList));imageViews = new ImageView[arrayList.size()];for (int i = 0; i < arrayList.size(); i++) {ImageView imageView = new ImageView(this);imageView = new ImageView(this);imageView.setLayoutParams(new LayoutParams(20, 20));imageView.setPadding(5, 0, 5, 0);imageViews[i] = imageView;if (i == 0)imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_focused));elseimageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_unfocused));viewGroup.addView(imageViews[i]);}}// ==============class NavigationPageChangeListener implements OnPageChangeListener {@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageSelected(int arg0) {// TODO Auto-generated method stubcurrentItem = arg0;for (int i = 0; i < imageViews.length; i++) {if (arg0 == i) {imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_focused));} else {imageViews[i].setImageDrawable(getResources().getDrawable(R.drawable.page_unfocused));}}}}public class MyViewPagerAdapter extends PagerAdapter {private List<View> mListViews;public MyViewPagerAdapter(List<View> mListViews) {this.mListViews = mListViews;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView(mListViews.get(position));}@Overridepublic Object instantiateItem(ViewGroup container, int position) {container.addView(mListViews.get(position), 0);return mListViews.get(position);}@Overridepublic int getCount() {return mListViews.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}}// =============================@Overrideprotected void onStart() {// TODO Auto-generated method stub// 用一个定时器 来完成图片切换// Timer 与 ScheduledExecutorService 实现定时器的效果scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();// 通过定时器 来完成 每2秒钟切换一个图片// 经过指定的时间后,执行所指定的任务// scheduleAtFixedRate(command, initialDelay, period, unit)// command 所要执行的任务// initialDelay 第一次启动时 延迟启动时间// period 每间隔多次时间来重新启动任务// unit 时间单位scheduledExecutorService.scheduleAtFixedRate(new ViewPagerTask(), 1, 5,TimeUnit.SECONDS);super.onStart();}// 用来完成图片切换的任务private class ViewPagerTask implements Runnable {public void run() {// 实现我们的操作// 改变当前页面currentItem = (currentItem + 1) % imageViews.length;// Handler来实现图片切换handler.obtainMessage().sendToTarget();}}@Overrideprotected void onStop() {// 停止图片切换scheduledExecutorService.shutdown();super.onStop();}}

http://download.csdn.net/detail/yujunlong3919/7577531

0 0
原创粉丝点击