自定义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
- 自定义ViewPagerIndictor
- ViewPagerIndictor
- Android之ViewPagerIndictor三角形指示器
- ViewPagerIndictor框架的使用(第一部分)
- 问题解决:ViewPager+ViewPagerIndictor联动怎么懒加载
- 开源框架ViewPagerIndictor(指示器)的使用
- 【Andord实战】SlideMenu+ViewPagerIndictor滑动侧边双栏+滑动导航栏
- 自定义
- 自定义
- 自定义
- 自定义
- 自定义
- 自定义TexBox,自定义ComboBox
- 自定义View自定义属性
- 自定义View自定义属性
- 自定义View自定义属性
- 自定义View自定义属性
- 自定义一个自定义对话框
- java 中文和Unicode码 互相转换
- NSIS卸载后无法删除开始菜单中的内容
- 矩阵的求逆
- 分布式调用跟踪系统的设计和应用学习
- 大数据集群环境搭建
- 自定义ViewPagerIndictor
- Machine Learning Week3
- laravel路由组划分
- 【整理】JS中的History对象
- Delphi Project 之工程选项(Project Options)
- Android 动画之RotateAnimation应用详解
- JAVA SOCKET connect超时设置是如何实现的?
- 日间模式转换夜间模式
- 【电脑技术】:电脑黑屏的情况统计