一行代码快速实现今日头条 网易新闻焦点图自动循环轮播效果

Posted 编程小石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一行代码快速实现今日头条 网易新闻焦点图自动循环轮播效果相关的知识,希望对你有一定的参考价值。

有时候我们需要顶部焦点图可以自动轮播并且左右滑动时可以循环轮播,下面就来自定义这样的控件来实现,使用起来特别简单

实现功能

1,自动循环轮播,可以设置时间

2,可以手动实现循环滑动

3,可以自定义轮播时圆点大小和颜色


欢迎star

先看效果图

一行代码快速实现今日头条



使用起来也特别简单,直接把下面的自定义控件复制到你的项目中,就可以一行代码快速实现自动无限轮播效果了。




一,自定义可以自动轮播的控件


package com.qclautocycleview;


import android.app.Activity;
import android.content.Context;
import android.os.SystemClock;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;


import java.util.ArrayList;
import java.util.List;


/**
* 可以自动循环轮播的viewpager控件
* 实现功能
* 1,自动循环轮播,可以设置时间
* 2,可以手动实现循环滑动
*/
public class AutoCycleView extends RelativeLayout
private final static String CYCLE_VIEW = "AtuoCycleView";//打印log用的


private List<String> mViewList;
private ViewPager mViewpage;
private Activity mContext;
private CyclePagerAdapter mAdapter;
private CycleRunable mCycleRunable = new CycleRunable();


private CycleIndexView mCycleIdxView;//圆点




public AutoCycleView(Context context)
super(context);
init(context);



public AutoCycleView(Context context, AttributeSet attrs)
super(context, attrs);
init(context);



public AutoCycleView(Context context, AttributeSet attrs, int defStyleAttr)
super(context, attrs, defStyleAttr);
init(context);



/*
* 初始化
* */
public void init(Context context)


mViewList = new ArrayList<String>();


/*
* 把viewpager和圆点添加到布局中
* */
mViewpage = new ViewPager(context);
LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
mViewpage.setLayoutParams(layoutParams);
addView(mViewpage);
mViewpage.setAdapter(mAdapter = new CyclePagerAdapter());
mViewpage.addOnPageChangeListener(new CycleViewChangeListener());


//自定义滑动时的圆点
mCycleIdxView = new CycleIndexView(context);
addView(mCycleIdxView);





/*
* 传入所需的数据
* */
public void setViewList(List<String> viewList, Activity mainActivity)
mContext = mainActivity;
mViewList = viewList;
//增加循环项


mViewpage.setCurrentItem(1);
mAdapter.notifyDataSetChanged();


createIdxView(viewList.size() - 2);//创建和viewpager数据对应的圆点





/*
* 创建所需圆点
* */
public void createIdxView(int size)
if (null != mCycleIdxView)
mCycleIdxView.setViewCount(size);//设置圆点个数
LayoutParams layoutParams = new LayoutParams(mCycleIdxView.getCycleIdxViewWidth(), mCycleIdxView.getCycleIdxViewHeight());
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//居于底部
layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);//水平居中
mCycleIdxView.setLayoutParams(layoutParams);




/*
* 设置自动轮播时间间隔
* */
public void startCycle(long time)
mCycleRunable.setCycleTime(time);
mCycleRunable.startCycle();



/*
* 开启循环
* */
public void startCycle()
mCycleRunable.startCycle();





/*
* viewpager对应的适配器
* */
public class CyclePagerAdapter extends PagerAdapter


@Override
public int getCount()
return mViewList.size();



@Override
public boolean isViewFromObject(View view, Object object)
return view == object;



@Override
public void destroyItem(ViewGroup container, int position, Object object)
container.removeView((View) 使用python-aiohttp爬取今日头条

GNE: 4行代码实现新闻类网站通用爬虫

js如何实现新闻轮播

Python的几个爬虫代码整理(网易云微信淘宝今日头条)

哪一个新闻类app比较好

使用scrapy爬虫,爬取今日头条首页推荐新闻(scrapy+selenium+PhantomJS)