自定义ViewPagerIndictor

来源:互联网 发布:linux查看文件目录命令 编辑:程序博客网 时间:2024/06/05 05:09

//自定义MyViewPagerIndictor

public class MyViewPagerIndictor extends HorizontalScrollView implements OnClickListener {    // 成员变量    private LinearLayout linearLayout;    ArrayList<View> list = new ArrayList<View>();    private ViewPager viewPager;    private List<MyData> tiltelist;    public MyViewPagerIndictor(Context context) {        super(context);        initview();    }    public MyViewPagerIndictor(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        initview();    }    public MyViewPagerIndictor(Context context, AttributeSet attrs) {        super(context, attrs);        initview();    }    // 创建线性布局    private void initview() {        linearLayout = new LinearLayout(getContext());        this.addView(linearLayout);    }    // 点击    @Override    public void onClick(View v) {        setCurrentItem(v.getId());    }    public void setViewPager(ViewPager viewPager) {        this.viewPager = viewPager;        viewPager.setOnPageChangeListener(new OnPageChangeListener() {            @Override            public void onPageSelected(int arg0) {                setCurrentItem(arg0);            }            @Override            public void onPageScrolled(int arg0, float arg1, int arg2) {            }            @Override            public void onPageScrollStateChanged(int arg0) {            }        });    }    // 添加布局文件    public void addTiTles(List<MyData> tiltelist) {        this.tiltelist = tiltelist;        list.clear();        for (int i = 0; i < tiltelist.size(); i++) {            View view = View.inflate(getContext(), R.layout.indictor_item, null);            TextView in_title = (TextView) view.findViewById(R.id.in_title);            TextView in_line = (TextView) view.findViewById(R.id.in_line);            list.add(view);// 添加布局            in_title.setText(tiltelist.get(i).name);            if (i == 0) {                in_title.setTextColor(Color.RED);                in_line.setVisibility(View.GONE);            } else {                in_title.setTextColor(Color.BLACK);                in_line.setVisibility(View.GONE);            }            view.setId(i);            view.setOnClickListener(this);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,                    LayoutParams.WRAP_CONTENT);            linearLayout.addView(view, params);        }    }    private void setCurrentItem(int arg0) {        this.setScrollBarStyle(HorizontalScrollView.GONE);        int width = linearLayout.getChildAt(arg0).getWidth();        this.scrollTo(width * arg0, 0);        for (int i = 0; i < tiltelist.size(); i++) {            View view = list.get(i);            TextView in_title = (TextView) view.findViewById(R.id.in_title);            TextView in_line = (TextView) view.findViewById(R.id.in_line);            if (arg0 == i) {                // 设置穿过来的viewpager的当前界面                viewPager.setCurrentItem(i);                in_title.setTextColor(Color.RED);                in_line.setVisibility(View.GONE);            } else {                in_title.setTextColor(Color.BLACK);                in_line.setVisibility(View.GONE);            }        }    }
//主方法public class MainActivity extends FragmentActivity {    // 成员变量    String url = "http://ic.snssdk.com/article/category/get/v2/?user_city=%E5%AE%20%89%E9%98%B3&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1465099837&categories=%20%5B%22video%22%2C%22news_hot%22%2C%22news_local%22%2C%22news_society%22%2C%22subscription%20%22%2C%22news_entertainment%22%2C%22news_tech%22%2C%22news_car%22%2C%22news_sports%22%2C%20%22news_finance%22%2C%22news_military%22%2C%22news_world%22%2C%22essay_joke%22%2C%20%22image_funny%22%2C%22image_ppmm%22%2C%22news_health%22%2C%22positive%22%2C%22jinritemai%20%22%2C%22news_house%20%22%5D&version=17375902057%7C14%7C1465030267&iid=4471477475&device_id=17375902057&ac=wifi&c%20hannel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_t%20ype=Samsung+Galaxy+S3+-+4.3+-+API+18+-%20+720x1280&os_api=18&os_version=4.3&openudid=7036bc89d44f680c";    private String name[];    private MyViewPagerIndictor indictor;    private ViewPager viewPager;    private List<MyData> titles_list = new ArrayList<MyData>();    private View view;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 今日头条导航        Indictor();        // 解析JSON 46个标题        TitlesTob();        view = View.inflate(MainActivity.this, R.layout.cehua_item, null);    }    // 展示平滑标题    private void TitlesTob() {        new AsyncTask<String, Void, Void>() {            @Override            protected Void doInBackground(String... params) {                try {                    String json = HttpUrl.readUrl(url);                    Gson gson = new Gson();                    TipTitle fromJson = gson.fromJson(json, TipTitle.class);                    titles_list.addAll(fromJson.data.data);                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            protected void onPostExecute(Void result) {                indictor.addTiTles(titles_list);            };        }.execute(url);      }     }    // 今日头条导航    private void Indictor() {        // 找到控件        indictor = (MyViewPagerIndictor) findViewById(R.id.indictor);        viewPager = (ViewPager) findViewById(R.id.viewpager);        indictor.setViewPager(viewPager);        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public int getCount() {                return titles_list.size();            }            @Override            public Fragment getItem(int arg0) {                Fragment instance = TitleFragment.getInstance(titles_list.get(arg0).category);                return instance;            }            // 设置indiccator展示的标题            @Override            public CharSequence getPageTitle(int position) {                return titles_list.get(position).category;            }        });    }
//自定义Fragmentpublic class TitleFragment extends Fragment {    // 成员变量    String category;    private View view;// 自定义listview    private String TAG = "TitleFragment";// 打印log    private List<DataBean> list;    private ProgressDialog pd;// 加载显示    private XListView xlv;    private MyAdapter_content adapter;    private NewInfo newInfo;    @SuppressLint("NewApi")    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        // 从MainActivity传过来的category值        Bundle bundle = getArguments();        category = bundle.getString("names", "");        view = View.inflate(getActivity(), R.layout.listview_content, null);        LogtUtils.i(TAG, "===+++++++++++===" + category);// 输出log显示到滑动到哪一个标题        // 解析url        final String url = "http://ic.snssdk.com/2/article/v25/stream/?category=" + category                + "&count=20&min_behot_time=1465197958&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1465265107&loc_mode=5&lac=4527&cid=28883&iid=4464422609&device_id=17258390367&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SAMSUNG&os_api=19&os_version=4.4.4&uuid=353040417908000&openudid=84c1c7b192991cc6";        // 异步请求数据,执行耗时操作        new AsyncTask<String, Void, List<DataBean>>() {            // 加载ProgressDialog            protected void onPreExecute() {                pd = ProgressDialog.show(getActivity(), "提示", "小杨努力加载...");            };            @Override            protected List<DataBean> doInBackground(String... params) {                try {                    String json = HttpUrl.readUrl(url);                    Gson gson = new Gson();                    newInfo = gson.fromJson(json, NewInfo.class);                    list = newInfo.data;                    return list;                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            // 执行listview展示            protected void onPostExecute(final List<DataBean> result) {                pd.dismiss();// 加载完之后显示的数据                // 找到控件                xlv = (XListView) view.findViewById(R.id.xlv_content);                adapter = new MyAdapter_content(result, getActivity());                xlv.setAdapter(adapter);                // 支持上拉刷新                // 加载数据                // 点击跳转webview展示                xlv.setOnItemClickListener(new OnItemClickListener() {                    @Override                    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {                        Intent intent = new Intent(getActivity(), TwoActivity.class);                        intent.putExtra("url", list.get(arg2).article_url);                        startActivity(intent);                    }                });            };        }.execute(url);        return view;// 这里返回的是我自定义listview    }    public static Fragment getInstance(String names) {        TitleFragment titleFragment = new TitleFragment();        Bundle args = new Bundle();        args.putString("names", names);        titleFragment.setArguments(args);        return titleFragment;    }
//布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/in_title"        android:padding="10dp"        android:textSize="20sp"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:id="@+id/in_line"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout>
0 0
原创粉丝点击