依赖:compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.youth.banner:banner:1.4.9'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.google.code.gson:gson:2.8.1'
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
public class MyView extends View { private static final float RADIUS = 50F; private Paint mPaint; private PointF mPointF; public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } //初始化画笔和坐标 private void init() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.BLUE); mPointF = new PointF(RADIUS, RADIUS); } @Override protected void onDraw(Canvas canvas) { drawCircle(canvas); } //绘制小球 private void drawCircle(Canvas canvas) { float x = mPointF.x; float y = mPointF.y; canvas.drawCircle(x, y, RADIUS, mPaint); } private void startAnimation() { PointF startPoint = new PointF(RADIUS, RADIUS); PointF endPoint = new PointF(getWidth() - RADIUS, getHeight() - RADIUS); ValueAnimator anim = ValueAnimator.ofObject(new PointFEvaluator(), startPoint, endPoint); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { //坐标改变 进行图像重绘 public void onAnimationUpdate(ValueAnimator animation) { mPointF = (PointF) animation.getAnimatedValue(); invalidate(); } }); //背景色渐变动画 ObjectAnimator anim2 = ObjectAnimator.ofObject(mPaint, "color", new ArgbEvaluator(), Color.BLUE, Color.BLUE); AnimatorSet animSet = new AnimatorSet(); animSet.play(anim).with(anim2); animSet.setDuration(3000); animSet.start(); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); startAnimation(); }}
------------------------------------------------------------------------------------------------------------------------------
public class SplashActivity extends AppCompatActivity {
private MyView myview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
myview = (MyView) findViewById(R.id.myview);
new Thread(){
@Override
public void run() {
SystemClock.sleep(3000);
startActivity(new Intent(SplashActivity.this,MainActivity.class));
finish();
}
}.start();
}
}
===========================================================================
public class MainActivity extends FragmentActivity {
private RadioGroup rg;
private ViewPager vp;
private List<Fragment> list = new ArrayList<>();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rg = (RadioGroup) findViewById(R.id.rg);
vp = (ViewPager) findViewById(R.id.viewpager);
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
for (int i = 0; i < list.size(); i++) {
RadioButton rb = (RadioButton) rg.getChildAt(i);
if (rb.isChecked()) {
rb.setTextColor(Color.RED);
vp.setCurrentItem(i, false);
} else {
rb.setTextColor(Color.BLACK);
}
}
}
});
initData();
vp.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}
private void initData() {
list.add(new FragmentOne());
list.add(new FragmentTwo());
list.add(new FragmentThree());
list.add(new FragmentFour());
vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
});
}
}
---------------------------------------------------------------------------------------------------------------------------
public class FragmentOne extends Fragment {
private Banner banner;
private RecyclerView recyclerView;
private List<ListBean.StoriesBean> list = new ArrayList<>();
private List<ListBean.TopStoriesBean> list2 = new ArrayList<>();
// private List<String> strList = new ArrayList<>();
private List<String> imgList = new ArrayList<>();
private String url = "http://news-at.zhihu.com/api/4/news/latest";
private Handler handler = new Handler();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getContext(), R.layout.frag_one, null);
banner = (Banner) view.findViewById(R.id.mybanner);
recyclerView = (RecyclerView) view.findViewById(R.id.myrecycleview);
LinearLayoutManager linearmanager = new LinearLayoutManager(getContext());
recyclerView.setLayoutManager(linearmanager);
// MyTask task = new MyTask();
// task.execute(url);
initData();
return view;
}
private void initData() {
OkHttpClient client = new OkHttpClient();
//网络请求,传入url地址
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
if (response.body() != null && response.isSuccessful()) {
//result就是返回的数据
String result = response.body().string();
ListBean bean = ListBean.objectFromData(result);
list = bean.stories;
list2 = bean.top_stories;
for (int i = 0; i < list2.size(); i++) {
imgList.add(list2.get(i).image);
}
// for (int i =0;i <list.size();i++){
// strList.add(list.get(i).images.get(i));
// }
handler.post(new Runnable() {
@Override
public void run() {
//配置recycleView适配器
recyclerView.setAdapter(new MyAdapter(list, getContext()));
//初始化banner,设置图片集合,小圆点样式,轮播切换时间
banner.setImageLoader(new GlideImageLoader());
banner.setImages(imgList);
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);//小圆点样式
banner.setDelayTime(2000);//切换时间
banner.start();
}
});
}
}
});
}
//Banner使用Glide加载图片
public class GlideImageLoader extends ImageLoader {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
}
}
---------------------------------------------------------------------------------------------------------------------------------
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<ListBean.StoriesBean> list = new ArrayList<>();
// private List<String> strList = null;
private Context context;
private ImageLoader loader;
public MyAdapter(List<ListBean.StoriesBean> list, Context context) {
this.list = list;
// this.strList = strList;
this.context = context;
loader = ImageLoader.getInstance();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);
return new MyAdapter.ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.id.setText(list.get(position).id);
holder.title.setText(list.get(position).title);
// strList = list.get(position).images;
// loader.displayImage(strList.get(position), holder.img);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public View view;
public ImageView img;
public TextView id, title;
public ViewHolder(View view) {
super(view);
this.view = view;
this.img = (ImageView) view.findViewById(R.id.item_list_img);
this.id = (TextView) view.findViewById(R.id.item_list_id);
this.title = (TextView) view.findViewById(R.id.item_list_title);
}
}
}
============================================================================
public class MyAdapterGrid extends RecyclerView.Adapter<MyAdapterGrid.ViewHolder> {
private List<MyBean.OthersBean> list = new ArrayList<>();
private Context context;
private ImageLoader loader;
public MyAdapterGrid(List<MyBean.OthersBean> list, Context context) {
this.list = list;
this.context = context;
loader = ImageLoader.getInstance();
}
//刷新方法
public void addItem(List<MyBean.OthersBean> newdatas) {
newdatas.addAll(list);
list.removeAll(list);
list.addAll(newdatas);
notifyDataSetChanged();
}
//下拉加载数据
public void addMore(List<MyBean.OthersBean> newdatas) {
list.addAll(newdatas);
notifyDataSetChanged();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_grid, parent, false);
return new MyAdapterGrid.ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(list.get(position).description);
String url = list.get(position).thumbnail;
loader.displayImage(url, holder.img);
}
@Override
public int getItemCount() {
return list.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public View view;
public ImageView img;
public TextView title;
public ViewHolder(View view) {
super(view);
this.view = view;
this.img = (ImageView) view.findViewById(R.id.item_grid_img);
this.title = (TextView) view.findViewById(R.id.item_grid_title);
}
}
}
==============================================================================
public class FragmentFour extends Fragment {
private RecyclerView recyclerView;
private List<MyBean.OthersBean> list = new ArrayList<>();
private String url = "http://news-at.zhihu.com/api/4/themes";
private Handler handler = new Handler();
private SwipeRefreshLayout swipeRefreshLayout;
private GridLayoutManager manager;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = View.inflate(getContext(), R.layout.frag_four, null);
recyclerView = (RecyclerView) view.findViewById(R.id.frag_four_recycleview);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swiperefresh);
manager = new GridLayoutManager(getContext(), 2);
recyclerView.setLayoutManager(manager);
//初始化数据
initData();
swipeRefreshLayout.setColorSchemeColors(Color.RED, Color.BLUE);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
new MyAdapterGrid(list, getContext()).addItem(list);
swipeRefreshLayout.setRefreshing(false);
}
},3000);
}
});
return view;
}
private void initData() {
OkHttpClient client = new OkHttpClient();
//网络请求,传入url地址
Request request = new Request.Builder().url(url).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
if (response.body() != null && response.isSuccessful()) {
//result就是返回的数据
String result = response.body().string();
MyBean bean = MyBean.objectFromData(result);
list = bean.others;
handler.post(new Runnable() {
@Override
public void run() {
//配置recycleView适配器
recyclerView.setAdapter(new MyAdapterGrid(list, getContext()));
}
});
}
}
});
}
}