亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程實現ListView頭部ViewPager廣告輪詢圖效果

2020-04-11 11:21:20
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程實現ListView頭部ViewPager廣告輪詢圖效果。分享給大家供大家參考,具體如下:

之前看了別人的一些軟件,發現其廣告圖輪詢的時候,那個廣告感覺和ViewPager的效果不太一樣,后來也查了一下,是因為時間問題,找了一些資料,自己也實踐一下。

1、為了解決ListView頭部加ViewPager滑動沖突問題,必須自定義ListView,重寫里面的onInterceptTouchEvent方法,ListView代碼如下:

package com.example.testa; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ListView; public class DefinedListView extends ListView {  public DefinedListView(Context context) {   super(context);  }  public DefinedListView(Context context, AttributeSet attrs) {   super(context, attrs);  }  public DefinedListView(Context context, AttributeSet attrs, int defStyle) {  super(context, attrs, defStyle);  }  private float xDistance, yDistance, xLast, yLast;  @Override  public boolean onInterceptTouchEvent(MotionEvent ev) {   switch (ev.getAction()) {    case MotionEvent.ACTION_DOWN:     xDistance = yDistance = 0f;     xLast = ev.getX();     yLast = ev.getY();     break;    case MotionEvent.ACTION_MOVE:     final float curX = ev.getX();     final float curY = ev.getY();     xDistance += Math.abs(curX - xLast);     yDistance += Math.abs(curY - yLast);     xLast = curX;     yLast = curY;     if (xDistance > yDistance) {      return false;     }   }   return super.onInterceptTouchEvent(ev);  } }

2、為了讓廣告輪詢的速度減慢,必須重新設置ViewPager的Scroller,自定義的Scroller如下:

package com.example.testa; import java.lang.reflect.Field; import android.annotation.SuppressLint; import android.content.Context; import android.os.Handler; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.animation.Interpolator; import android.widget.Scroller; public class DefinedScroller extends Scroller {  private int DURATION_TIME = 1000;  private boolean shouldAutoScroll = true;  private ViewPager viewPager = null;  @SuppressLint("HandlerLeak")  private final Handler handler = new Handler() {   public void handleMessage(android.os.Message msg) {    if (shouldAutoScroll) {     viewPager.setCurrentItem(viewPager.getCurrentItem() + 1);     handler.sendEmptyMessageDelayed(0, 2000);    }   };  };  public DefinedScroller(Context context) {   super(context);  }  public DefinedScroller(Context context, Interpolator interpolator) {   super(context, interpolator);  }  private View initViewPager(Context context) {   View view = LayoutInflater.from(context).inflate(R.layout.view_pager_layout, null);  this.viewPager = (ViewPager) view.findViewById(R.id.viewpager);  this.viewPager.setOffscreenPageLimit(2);   this.viewPager.setAdapter(new MyFragmentPagerAdapter(((FragmentActivity) context).getSupportFragmentManager()));   return view;  }  public ViewPager getViewPager() {   return viewPager;  }  public View initView(Context context) {   View view = initViewPager(context);   this.viewPager.setOnTouchListener(new OnTouchListener() {    @Override    public boolean onTouch(View v, MotionEvent event) {     if (event.getAction() == MotionEvent.ACTION_UP) {      shouldAutoScroll = true;      handler.sendEmptyMessageDelayed(0, 2000);     } else {      handler.removeMessages(0);      shouldAutoScroll = false;     }     return false;    }   });   try {    Field mScroller = ViewPager.class.getDeclaredField("mScroller");    mScroller.setAccessible(true);    mScroller.set(viewPager, this);   } catch (NoSuchFieldException e) {   } catch (IllegalArgumentException e) {   } catch (IllegalAccessException e) {   }   handler.sendEmptyMessageDelayed(0, 2000);   return view;  }  public void setShouldAutoScroll() {   handler.removeMessages(0);   if (viewPager.isShown()) {    shouldAutoScroll = true;    handler.sendEmptyMessageDelayed(0, 2000);   } else {    shouldAutoScroll = false;   }  }  @Override  public void startScroll(int startX, int startY, int dx, int dy, int duration) {   super.startScroll(startX, startY, dx, dy, shouldAutoScroll ? DURATION_TIME : duration);  } }

關鍵是startScroll方法啦

3、其他測試類,

(1)TestFragment:

package com.example.testa; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; public class TestFragment extends Fragment {  public int imageResource = 0;  public static TestFragment newInstance(int imageResource) {   TestFragment newFragment = new TestFragment();   newFragment.imageResource = imageResource;   return newFragment;  }  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {   View view = inflater.inflate(R.layout.pager_layout, null);   ImageView textView = (ImageView) view.findViewById(R.id.image);   textView.setImageResource(imageResource);   return view;  } }

(2)ViewPager的Adapter類:

package com.example.testa; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; public class MyFragmentPagerAdapter extends FragmentStatePagerAdapter {  public MyFragmentPagerAdapter(FragmentManager fm) {   super(fm);  }  @Override  public int getCount() {   return Integer.MAX_VALUE;  }  @Override  public Fragment getItem(int arg0) {   switch (arg0 % 4) {    case 0:     return TestFragment.newInstance(R.drawable.a1);    case 1:     return TestFragment.newInstance(R.drawable.default_wh);    case 2:     return TestFragment.newInstance(R.drawable.default_ww);    case 3:     return TestFragment.newInstance(R.drawable.test);    default:     return TestFragment.newInstance(R.drawable.a1);   }  } }

(3)測試的Activity:

package com.example.testa; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.TextView; public class MainActivity extends FragmentActivity {  private DefinedListView listView = null;  private List<String> list = null;  private DefinedScroller definedScroller = null;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   listView = (DefinedListView) findViewById(R.id.listview);   initListData();   initViewPager();   listView.setAdapter(new ListAdapter());   listView.setOnItemClickListener(new OnItemClickListener() {    @Override    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {     definedScroller.getViewPager().setCurrentItem(definedScroller.getViewPager().getCurrentItem() + 1);    }   });   listView.setOnScrollListener(new OnScrollListener() {    @Override    public void onScrollStateChanged(AbsListView view, int scrollState) {     if (scrollState == SCROLL_STATE_IDLE) {      definedScroller.setShouldAutoScroll();     }    }    @Override    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {    }   });  }  private void initListData() {   list = new ArrayList<String>();   for (int i = 1; i <= 20; ++i) {    list.add("test" + i);   }  }  private void initViewPager() {   definedScroller = new DefinedScroller(this);   listView.addHeaderView(definedScroller.initView(this));  }  private class ListAdapter extends BaseAdapter {   @Override   public int getCount() {    return list.size();   }   @Override   public Object getItem(int position) {    return list.get(position);   }   @Override   public long getItemId(int position) {    return position;   }   @Override   public View getView(int position, View convertView, ViewGroup parent) {   TextView textView = (TextView) LayoutInflater.from(MainActivity.this).inflate(R.layout.text_view_layout,      null);    textView.setPadding(20, 20, 20, 20);    textView.setText(list.get(position));    return textView;   }  } }

4、布局文件就算了吧

上面有些是在別的地方看到的,很久了,忘記在哪里看到的了,就寫不上源地址了,敬請見諒。

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019年中文视频免费在线观看| 国产精品视频xxxx| …久久精品99久久香蕉国产| 精品亚洲va在线va天堂资源站| 亚洲sss综合天堂久久| 热久久免费国产视频| 91热福利电影| 国产精品大陆在线观看| 亚洲最新中文字幕| 久久久精品视频成人| 日韩中文字幕亚洲| 午夜精品福利电影| 欧美黑人性生活视频| 欧美日韩中国免费专区在线看| 欧美在线欧美在线| 国产精品精品久久久| 一区二区三区无码高清视频| 亚洲第一视频网| 92国产精品视频| 亚洲大胆人体视频| 国产精品自产拍在线观看中文| 国产日韩精品一区二区| 久久天天躁狠狠躁夜夜躁2014| 91极品女神在线| 91精品视频在线| 国产香蕉精品视频一区二区三区| 国产精品偷伦免费视频观看的| 久久韩国免费视频| 欧美精品性视频| 91视频88av| 国产精品午夜一区二区欲梦| 色哟哟网站入口亚洲精品| 国产成人久久久| 欧洲中文字幕国产精品| 日韩在线观看免费高清完整版| 成人免费在线视频网站| 亚洲国产精品字幕| 日产精品99久久久久久| 国产精品爽黄69天堂a| 在线观看日韩专区| 久久久久久国产精品三级玉女聊斋| 欧洲中文字幕国产精品| 国产欧洲精品视频| 久久免费视频在线| 国产精品日韩av| 亚洲成人在线网| 亚洲精品电影在线观看| 欧美大尺度电影在线观看| 92国产精品久久久久首页| 亚洲免费伊人电影在线观看av| 亚洲国产高清自拍| 91久久国产综合久久91精品网站| 亚洲三级av在线| 久久久久国产精品免费| 日韩免费在线电影| 国产成人精品视频在线| 国产精品自拍视频| 亚洲视频在线观看免费| 亚洲加勒比久久88色综合| 91av在线影院| 日韩在线免费视频| 国产精品嫩草影院久久久| 国产精品亚洲视频在线观看| 国产精品久久久久久久久粉嫩av| 国产精品黄色av| 92福利视频午夜1000合集在线观看| 91精品国产91久久久| 动漫精品一区二区| 亚洲在线免费观看| 欧美激情国产日韩精品一区18| 亚洲一区二区三区视频| 国产精品va在线播放我和闺蜜| 日韩网站在线观看| 欧美丝袜第一区| 亚洲综合在线播放| 久久精品2019中文字幕| 欧美激情xxxx| 91沈先生作品| 久久精品视频导航| 91成人性视频| 亚洲精品动漫久久久久| 亚洲国产三级网| 亚洲香蕉伊综合在人在线视看| 91精品久久久久久久久不口人| 亚洲国产99精品国自产| 国产精品青草久久久久福利99| 狠狠做深爱婷婷久久综合一区| 欧美一级bbbbb性bbbb喷潮片| 国产精品高潮在线| 亚洲免费小视频| 97成人精品区在线播放| 日韩欧美综合在线视频| 久久精品亚洲94久久精品| 久久久精品2019中文字幕神马| 久久影院免费观看| 亚洲成人精品在线| 搡老女人一区二区三区视频tv| 欧美精品videofree1080p| 91色视频在线导航| 久久久久久久久久久久久久久久久久av| 亚洲大胆人体av| 欧美性理论片在线观看片免费| 日本欧美国产在线| 欧美日韩国产成人| 国模精品视频一区二区三区| 日韩精品亚洲视频| 91色视频在线观看| 日韩av色综合| 欧美视频在线免费看| 欧美性感美女h网站在线观看免费| 91深夜福利视频| 日韩av网站大全| 68精品久久久久久欧美| 欧美午夜视频在线观看| 91禁外国网站| 欧美做爰性生交视频| 国产盗摄xxxx视频xxx69| 欧美成年人视频网站| 韩国精品久久久999| 海角国产乱辈乱精品视频| 欧美成人免费一级人片100| 欧美成年人网站| 综合网中文字幕| 国产suv精品一区二区| 欧美日韩国产一区中文午夜| 亚洲人在线观看| 成人深夜直播免费观看| 亚洲国内精品视频| 18性欧美xxxⅹ性满足| 亚洲精品91美女久久久久久久| 亚洲成人中文字幕| 一本久久综合亚洲鲁鲁| 亚洲欧美精品suv| 亚洲精品福利在线观看| 欧美精品在线免费播放| 欧美高清电影在线看| 激情久久av一区av二区av三区| 午夜精品一区二区三区在线| 97高清免费视频| 国产日韩在线精品av| 清纯唯美日韩制服另类| 91麻豆国产语对白在线观看| 日韩精品极品在线观看| 国产成人精品999| 一区二区三区视频免费在线观看| 国产一区二区三区视频在线观看| 亚洲国产私拍精品国模在线观看| 亚洲第一网中文字幕| 69视频在线免费观看| 欧美激情精品久久久| 亚洲国产另类 国产精品国产免费| 日韩在线观看免费网站| 国产一区二区黑人欧美xxxx| 日韩va亚洲va欧洲va国产| 欧美主播福利视频| 国产亚洲欧美视频| 青青草国产精品一区二区| 国产精品一区av| 亚洲男人的天堂网站| 91九色国产社区在线观看| 日韩免费视频在线观看| 精品亚洲精品福利线在观看| 欧美午夜影院在线视频| 亚洲久久久久久久久久|