android 圆形框架,038 Android Magicindicator开源框架实现viewpager底部圆形指示器

packagecom.example.administrator.test66smartbeijing.fragment;importandroid.annotation.SuppressLint;importandroid.graphics.Color;importandroid.os.Bundle;importandroid.support.annotation.NonNull;importandroid.support.annotation.Nullable;importandroid.support.v4.app.Fragment;importandroid.support.v4.view.PagerAdapter;importandroid.support.v4.view.ViewPager;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.ImageView;importandroid.widget.TextView;importcom.alibaba.fastjson.JSONObject;importcom.bumptech.glide.Glide;importcom.example.administrator.test66smartbeijing.R;importcom.example.administrator.test66smartbeijing.javabean.NewsMenu;importcom.example.administrator.test66smartbeijing.javabean.NewsTabBean;importcom.example.administrator.test66smartbeijing.utils.CacheUtils;importcom.example.administrator.test66smartbeijing.utils.ConstantValue;importcom.example.administrator.test66smartbeijing.utils.RecyclerAdapter;importnet.lucode.hackware.magicindicator.MagicIndicator;importnet.lucode.hackware.magicindicator.ViewPagerHelper;importnet.lucode.hackware.magicindicator.buildins.circlenavigator.CircleNavigator;importorg.xutils.common.Callback;importorg.xutils.http.RequestParams;importorg.xutils.image.ImageOptions;importorg.xutils.x;importjava.util.ArrayList;import staticandroid.media.AudioRecord.MetricsConstants.CHANNELS;/****/

public class TabDataFragment extendsFragment {

String queryResultStr="";

NewsMenu newsMenu;

ArrayListtopnews;privateViewPager viewPager;

TextView tv_news_vp_title;publicTabDataFragment() {

}

@SuppressLint("ValidFragment")publicTabDataFragment(NewsMenu newsMenu) {this.newsMenu=newsMenu;

}//新建一个Fragment实例

public staticFragment newInstance() {

TabDataFragment fragment= newTabDataFragment();returnfragment;

}

@Nullable

@OverridepublicView onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {//LayoutInflater.inflate()的功能是将一段 XML 资源文件加载成为 View。所以通常用于将 XML 文件实例化为 View。然后获取 View 上的组件最后操作之。

View rootView = inflater.inflate(R.layout.fragment_tab_data, container, false);

viewPager=rootView.findViewById(R.id.vp_news_center);

tv_news_vp_title=rootView.findViewById(R.id.tv_news_vp_title);

getDataFromServer();returnrootView;

}/*** viewPager的数据适配器*/

class NewsCenterAdapter extendsPagerAdapter{

@Overridepublic intgetCount() {returntopnews.size();

}

@Overridepublic booleanisViewFromObject(@NonNull View view, @NonNull Object object) {return view==object;

}

@NonNull

@Overridepublic Object instantiateItem(@NonNull ViewGroup container, intposition) {

ImageView imageView=newImageView(getActivity());//imageView.setImageResource(R.mipmap.news_pic_default);

String imageUrlTemp=topnews.get(position).topimage;//String imageUrl="http://118.25.152.62:8080/zhbj/10007/1452327318UU91.jpg";

String imageUrl=ConstantValue.SERVER_URL+imageUrlTemp.substring(25);

System.out.println(imageUrl);//利用Glide开源框架,加载网络图片

Glide.with(getActivity()).load(imageUrl).into(imageView);

container.addView(imageView);returnimageView;

}//销毁item

@Overridepublic void destroyItem(@NonNull ViewGroup container, intposition, @NonNull Object object) {

container.removeView((View) object);

}

}/*** 从服务器获取数据*/

private voidgetDataFromServer() {//请求地址

String url=ConstantValue.SERVER_URL+newsMenu.data.get(0).children.get(0).url;

RequestParams params= newRequestParams(url);

x.http().get(params,new Callback.CommonCallback() {

@Overridepublic voidonSuccess(String result) {//解析result

queryResultStr=result;

System.out.println(result);

processData(queryResultStr);//写缓存

CacheUtils.setCache(ConstantValue.NEWSCENTER_URL,queryResultStr,getActivity());

}//请求异常后的回调方法

@Overridepublic void onError(Throwable ex, booleanisOnCallback) {

}//主动调用取消请求的回调方法

@Overridepublic voidonCancelled(CancelledException cex) {

}

@Overridepublic voidonFinished() {

}

});

}/***@paramqueryResultStr 服务器返回结果*/

private voidprocessData(String queryResultStr) {

NewsTabBean newsTabBean= JSONObject.parseObject(queryResultStr,NewsTabBean.class);//利用viewPager实现图片轮播效果

topnews =newsTabBean.data.topnews;if(topnews!=null){

viewPager.setAdapter(newNewsCenterAdapter());

viewPager.setOnPageChangeListener(newViewPager.OnPageChangeListener() {

@Overridepublic void onPageScrolled(int position, float positionOffset, intpositionOffsetPixels) {

}

@Overridepublic void onPageSelected(intposition) {//设置viewpager上图片的标题

tv_news_vp_title.setText(topnews.get(position).title);

}

@Overridepublic void onPageScrollStateChanged(intstate) {

}

});//更新第一个头条新闻标题

tv_news_vp_title.setText(topnews.get(0).title);

initMagicIndicator1();

}

}/*** 初始化MagicIndicator*/

private voidinitMagicIndicator1() {

MagicIndicator magicIndicator=getActivity().findViewById(R.id.magic_indicator1);

CircleNavigator circleNavigator= newCircleNavigator(getActivity());

circleNavigator.setCircleCount(topnews.size());

circleNavigator.setCircleColor(Color.RED);

circleNavigator.setCircleClickListener(newCircleNavigator.OnCircleClickListener() {

@Overridepublic void onClick(intindex) {

viewPager.setCurrentItem(index);

}

});

magicIndicator.setNavigator(circleNavigator);

ViewPagerHelper.bind(magicIndicator, viewPager);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值