fragment集合里解析

本文介绍了一个基于Android平台的今日头条风格的应用主页实现方案,包括使用ViewPager进行页面切换、通过Fragment展示不同类别的新闻内容以及实现自定义适配器等功能。
package com.example.toutiao;

import java.util.ArrayList;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.example.fragment.Myfragment;

public class HomeActivity extends SlidingFragmentActivity implements
		OnClickListener {
	private ArrayList<Fragment> flist = new ArrayList<Fragment>();
	private ViewPager vp;
	private RadioGroup rg;
	private SlidingMenu menu;
	private String[] url = new String[] {
			"http://ic.snssdk.com/2/article/v25/stream/?count=20&min_behot_time=1468841996&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.039927&bd_longitude=116.299222&bd_loc_time=1468897525&loc_mode=7&loc_time=1468897489&latitude=40.046144180692714&longitude=116.30569239609902&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=30481&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&min_behot_time=1468841393&bd_city=������&bd_latitude=40.040079&bd_longitude=116.299419&bd_loc_time=1468899819&loc_mode=7&loc_time=1468899006&latitude=40.04610786144017&longitude=116.3056378726328&city=������&lac=4530&cid=30481&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_society&count=20&min_behot_time=1468826858&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.040066&bd_longitude=116.299354&bd_loc_time=1468900541&loc_mode=7&loc_time=1468899819&latitude=40.04610786144017&longitude=116.3056378726328&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_entertainment&count=20&bd_city=������&bd_latitude=40.040066&bd_longitude=116.299354&bd_loc_time=1468900541&loc_mode=7&loc_time=1468899819&latitude=40.04610786144017&longitude=116.3056378726328&city=������&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&bd_city=������&bd_latitude=40.040093&bd_longitude=116.299416&bd_loc_time=1469177219&loc_mode=7&loc_time=1469173827&latitude=40.046167846793544&longitude=116.30570547437816&city=������&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_car&count=20&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.040093&bd_longitude=116.299416&bd_loc_time=1469177219&loc_mode=7&loc_time=1469173827&latitude=40.046167846793544&longitude=116.30570547437816&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_sports&count=20&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.040093&bd_longitude=116.299416&bd_loc_time=1469177219&loc_mode=7&loc_time=1469173827&latitude=40.046167846793544&longitude=116.30570547437816&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_finance&count=20&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.040093&bd_longitude=116.299416&bd_loc_time=1469177219&loc_mode=7&loc_time=1469173827&latitude=40.046167846793544&longitude=116.30570547437816&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_military&count=20&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.040093&bd_longitude=116.299416&bd_loc_time=1469177219&loc_mode=7&loc_time=1469173827&latitude=40.046167846793544&longitude=116.30570547437816&city=%E5%8C%97%E4%BA%AC%E5%B8%82&lac=4530&cid=28615&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_health&count=20&bd_city=������&bd_latitude=40.040066&bd_longitude=116.299354&bd_loc_time=1469177855&loc_mode=7&loc_time=1469177467&latitude=40.046244950479775&longitude=116.30577088692061&city=������&lac=4530&cid=30481&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89",
			"http://ic.snssdk.com/2/article/v25/stream/?category=news_local&count=20&min_behot_time=1469176640&bd_city=%E5%8C%97%E4%BA%AC%E5%B8%82&bd_latitude=40.04005&bd_longitude=116.299307&bd_loc_time=1469182975&loc_mode=7&loc_time=1469182965&latitude=40.04623505402024&longitude=116.30576189228731&city=%E5%8C%97%E4%BA%AC%E5%B8%82&user_city=%E5%8C%97%E4%BA%AC&lac=4530&cid=30481&iid=4878106677&device_id=5626561549&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=PLK-TL01H&os_api=23&os_version=6.0&uuid=867689026581753&openudid=5e124a3bdab87e89", };
	private int widths;
	private HorizontalScrollView hs;
	private ImageView text_sou;
	private ImageView yong;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_home);
		vp = (ViewPager) findViewById(R.id.vp);
		yong=(ImageView) findViewById(R.id.yong);
		rg = (RadioGroup) findViewById(R.id.rg);
		text_sou = (ImageView) findViewById(R.id.text_sou);
		yong.setOnClickListener(this);
		text_sou.setOnClickListener(this);
		hs = (HorizontalScrollView) findViewById(R.id.hs);
		// 调节适配屏幕大小
		widths = getResources().getDisplayMetrics().widthPixels;
		// 默认选择第一个视图
		rg.getChildAt(0).setSelected(true);
		vp.setCurrentItem(0);
		changeview(0);
		viewColor(0);
		buttinto();
		// fragment
		tofragment();
		// viewpager����
		vp.setOnPageChangeListener(new OnPageChangeListener() {

			@Override
			public void onPageSelected(int arg0) {
				vp.setCurrentItem(arg0);
				// ����ҳ��
				changeview(arg0);
				// ������ɫ
				viewColor(arg0);
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
				// TODO Auto-generated method stub

			}
		});
		vp.setAdapter(new Myadapter(getSupportFragmentManager()));
	}

	private void tofragment() {
		for (int i = 0; i < rg.getChildCount(); i++) {
			Myfragment mf = new Myfragment();
			flist.add(mf);
		}
	}

	// Radiobutton����
	private void buttinto() {
		for (int i = 0; i < rg.getChildCount(); i++) {
			RadioButton but = (RadioButton) rg.getChildAt(i);
			final int pos = i;
			but.setOnClickListener(new OnClickListener() {

				@Override
				public void onClick(View arg0) {
					// �л���ͼ
					vp.setCurrentItem(pos);
					// ����ҳ��
					changeview(pos);
					// ������ɫ
					viewColor(pos);
				}
			});
		}
	}

	protected void viewColor(int pos) {
		for (int i = 0; i < rg.getChildCount(); i++) {
			RadioButton but = (RadioButton) rg.getChildAt(i);
			if (pos == i) {
				but.setTextColor(Color.RED);
			} else {
				but.setTextColor(Color.GRAY);
			}
		}
	}

	protected void changeview(int pos) {
		int count = rg.getChildCount();
		for (int i = 0; i < count; i++) {
			View child = rg.getChildAt(i);
			child.setSelected(i == pos);
		}
		View tabview = rg.getChildAt(pos);
		int left = tabview.getLeft();
		int width = tabview.getMeasuredWidth();
		int tox = left + width / 2 - widths / 2;
		hs.smoothScrollTo(tox, 0);
	}
	// ����fragment
	class Myadapter extends FragmentPagerAdapter {

		public Myadapter(FragmentManager fm) {
			super(fm);
			// TODO Auto-generated constructor stub
		}

		@Override
		public Fragment getItem(int arg0) {
			Fragment fragment = flist.get(arg0);
			Bundle bundle = new Bundle();
			bundle.putString("urls", url[arg0]);
			fragment.setArguments(bundle);
			return fragment;
		}

		public int getCount() {
			return flist.size();
		}
	}
}

//acti传递的参数
        Bundle bundle=getArguments();
        path=bundle.getString("urls"); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值