自定义轮播图+网络请求
来源:互联网 发布:证券期货软件开发许可 编辑:程序博客网 时间:2024/06/06 00:23
1.创建viewpa.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
2.创建自定义控件viewpage类
public class viewpager extends RelativeLayout implements ViewPager.OnPageChangeListener { //定义一个定时器 private Timer timer; private int currentItemindex; private ViewPager viewp; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); currentItemindex = viewp.getCurrentItem(); viewp.setCurrentItem(currentItemindex+1); } }; private ArrayList imageViews; private ImageView imageView; public viewpager(Context context) { this(context,null); } public viewpager(Context context, AttributeSet attrs) { this(context, attrs,0); } public viewpager(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); //创建自定义组件视图 View view= View.inflate(context, R.layout.viewpa,this); viewp = (ViewPager) view.findViewById(R.id.viewpager); viewp.addOnPageChangeListener(this); //初始化定时器 timer = new Timer(); } public void setAdapter(MyPagerAdapter myPagerAdapter){ viewp.setAdapter(myPagerAdapter); } //开启轮播 public void startAuto(){ //开始定时器 timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0); } },0,3000); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { }}
3.创建适配器MyPagerAdapter类
public class MyPagerAdapter extends PagerAdapter { private Context context; private List<TT> list; public MyPagerAdapter(Context context, List<TT> list) { this.context = context; this.list = list; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); //从网络上获取图片 ,需要到入一个Myapp的工具类 ImageLoader.getInstance().displayImage(list.get(position%list.size()).getIcon(),imageView, MyApp.getDefaultDisplayOption()); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(list.get(position%list.size()).getUrl()==""||list.get(position%list.size()).getUrl()==null) { }else{ Intent intent = new Intent(context,Main2Activity.class); // ("url",list.get(position).getUrl()); Bundle bundle = new Bundle(); bundle.putString("url",list.get(position%list.size()).getUrl()); intent.putExtras(bundle); context.startActivity(intent); } } }); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // super.destroyItem(container, position, object); container.removeView((View) object); }}
4.MainAcitiviy
public class MainActivity extends AppCompatActivity { ArrayList<TT> list = new ArrayList<>(); private viewpager dyvp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dyvp = (viewpager) findViewById(R.id.dyvp); qingqiu();} //网络请求 public void qingqiu() { MyTask myTask = new MyTask(new MyTask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson = new Gson(); Bean bean = gson.fromJson(jsonstr, Bean.class); List<Bean.DataBean> data = bean.getData(); for (int i = 0; i < data.size(); i++) { String icon = data.get(i).getIcon(); String title = data.get(i).getTitle(); String url = data.get(i).getUrl(); String[] split = title.split("|"); list.add(new TT(icon, split[1],url)); } MyPagerAdapter myPagerAdapter = new MyPagerAdapter(MainActivity.this ,list); dyvp.setAdapter(myPagerAdapter); dyvp.startAuto(); }}); myTask.execute("http://120.27.23.105/ad/getAd"); }}
5.在布局中使用自定义控件
导入工具类
Bean 类自己封装
添加网络权限’
TT是bean类自己封装
阅读全文
0 0
- 自定义轮播图+网络请求
- 自定义网络请求引擎
- 自定义网络请求
- Android自定义框架之网络请求
- 自定义UI 网络 请求类的封装
- Android自定义框架之网络请求 .
- Android为网络请求自定义加载动画
- 自定义网络请求图片的大小
- 自定义网络请求时加载动画dialog
- Android自定义网络请求状态组件
- 自定义支持数组的表单网络请求
- 自定义网络框架之json文本请求
- 自定义view的viewpager(网络请求图片)
- 网络请求框架(二):volley使用之自定义请求
- iOS网络编程(二) 自定义请求网络类----推荐用于需要请求过程片段数据
- 自定义带网络请求的UITableView中tableHeaderView视图
- 自定义列表选择Dialog,适用网络请求数据
- Volley实现自定义的网络请求Implementing a Custom Request
- 《逆向的入门》-希望能帮到一些对逆向有兴趣的朋友(如有转载请标注SmallSky写)
- 传球游戏
- 弹出层
- JAVA | 46
- 顺序表的创建算法
- 自定义轮播图+网络请求
- exception
- 自定义控件,banner无限轮播
- C++ 函数、类
- 算法期中 最长公共子串
- 16 OF 100DAYS
- 数据结构中静态顺序表的初始化、尾插、尾删、头插、头删、任意位置的插入及删除
- UVALive3199 Specialized Four-Digit Numbers【进制】
- 算法期中 最近的0