使用ViewPager和布局文件完成滑动切换

1.首先是主页面的布局



    

        

        

        
    

    

    
    


2.然后是主页面的代码
public class MainActivity extends FragmentActivity implements OnClickListener{
	/**
	 * 屏幕的宽度和高度
	 */
	public static int mScreenWidth;
	public static int mScreenHeight;
	private LinearLayout back_Iv;
	private ImageView selector; // 下划线
	private TextView hot_list_Tv;// 热门排行
	private TextView collection_list_Tv;// 收藏排行
	private TextView sales_list_Tv; // 销量排行
	private ViewPager viewPager;
	private BusinessRankAdapter pagerAdapter;
	private ArrayList pagers;

	private int currentPage = 0; // 当前viewpager页面
	private Context context;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		findViewById();
		setListener();
		init();
	}

	protected void findViewById() {
		context = this;
		 /**
         * 获取屏幕宽度和高度
         */
		DisplayMetrics metric = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(metric);
		mScreenWidth = metric.widthPixels;
		mScreenHeight = metric.heightPixels;
//		back_Iv = (LinearLayout) findViewById(R.id.back_Iv);
		selector = (ImageView) findViewById(R.id.ii_category_selector);
		 initSelector();
		hot_list_Tv = (TextView) findViewById(R.id.hot_list_Tv);
		hot_list_Tv.setSelected(true);
		collection_list_Tv = (TextView) findViewById(R.id.collection_list_Tv);
		sales_list_Tv = (TextView) findViewById(R.id.sales_list_Tv);
		viewPager = (ViewPager) findViewById(R.id.business_list_viewpager);
		viewPager.setCurrentItem(0);
	}

	protected void setListener() {
//		back_Iv.setOnClickListener(this);
		hot_list_Tv.setOnClickListener(this);
		collection_list_Tv.setOnClickListener(this);
		sales_list_Tv.setOnClickListener(this);
		
		viewPager.setOnPageChangeListener(onPageChangeListener);
	}

	private void init() {
		initPager();
		pagerAdapter = new BusinessRankAdapter(getSupportFragmentManager(),
				pagers);
		viewPager.setAdapter(pagerAdapter);

	}

	private void initPager() {
		pagers = new ArrayList();
		// 热门排行
		BusinessHotSortFragment mBusinessHotSortFragment = new BusinessHotSortFragment();
		Bundle bundle1 = new Bundle();

		bundle1.putString("rankType", "1");
//		mBusinessHotSortFragment.setArguments(bundle1);

		pagers.add(mBusinessHotSortFragment);

		// 收藏排行
		BusinessHotSortFragment collectSortFragment = new BusinessHotSortFragment();
		Bundle bundle2 = new Bundle();

		bundle2.putString("rankType", "2");
//		mBusinessHotSortFragment.setArguments(bundle2);
		pagers.add(collectSortFragment);

		// 销量排行
		BusinessHotSortFragment saleSortFragment = new BusinessHotSortFragment();
		Bundle bundle3 = new Bundle();

		bundle3.putString("rankType", "3");
//		mBusinessHotSortFragment.setArguments(bundle3);
		pagers.add(saleSortFragment);

	}

	/**
	 * 初始化下划线位置
	 */
	private void initSelector() {
		Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
				R.drawable.id_category_selector);
		int bitmapWidth = bitmap.getWidth();
		int left = (mScreenWidth / 3 - bitmapWidth) / 2;
		Matrix matrix = new Matrix();
		matrix.postTranslate(left, 0);
		selector.setImageMatrix(matrix);
	}

	/**
	 * viewpager滑动时间监听器
	 */
	private ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {

		@Override
		public void onPageSelected(int position) {
			hot_list_Tv.setSelected(false);
			collection_list_Tv.setSelected(false);
			sales_list_Tv.setSelected(false);
			switch (position) {
			case 0:
				hot_list_Tv.setSelected(true);

				break;
			case 1:
				collection_list_Tv.setSelected(true);

				break;
			case 2:
				sales_list_Tv.setSelected(true);

				break;
			}
			TranslateAnimation animation = new TranslateAnimation(currentPage
					* mScreenWidth / 3, position
					* mScreenWidth / 3, 0, 0);
			animation.setFillAfter(true);
			animation.setDuration(200);
			selector.startAnimation(animation);
			currentPage = position;
		}

		@Override
		public void onPageScrolled(int arg0, float arg1, int arg2) {

		}

		@Override
		public void onPageScrollStateChanged(int arg0) {

		}
	};

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
//		case R.id.back_Iv:
//			finish();
//			break;
		case R.id.hot_list_Tv://
			viewPager.setCurrentItem(0);
			break;
		case R.id.collection_list_Tv:
			viewPager.setCurrentItem(1);
			break;
		case R.id.sales_list_Tv:
			viewPager.setCurrentItem(2);

			break;
		default:
			break;
		}
	}

	public class BusinessRankAdapter extends FragmentPagerAdapter {

	    private ArrayList pagers;



	    public BusinessRankAdapter(FragmentManager fm, ArrayList list) {
	        super(fm);
	        this.pagers = list;

	    }

	    @Override
	    public int getCount() {
	        return pagers.size();
	    }

	    @Override
	    public Fragment getItem(int arg0) {
	        return pagers.get(arg0);
	    }


	}
}
3.单个 Fragment的布局



    

4.单个Fragment的代码,这个是大概的代码,可以自己改,大部分其实是不需要的

public class BusinessHotSortFragment extends Fragment implements View.OnClickListener {

//    private PullToRefreshListView mPullToRefreshListView;
    private Activity mActivity;
    private View layoutView;


//    private BusinessHotListAdapter businessHotListAdapter;// 热门排行


    private String currentCityCode;
    private String rankType;  //排行类型:1 热门排行 2 收藏排行 3 销量排行

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        //Log.d(TAG, "onCreateView");
        Bundle args = getArguments();
        if(null != args)
        {
            rankType = args.getString("rankType");
//            LogUtils.i("test", "rankType: " + rankType);
        }

        if (layoutView == null) {
            layoutView = inflater.inflate(R.layout.fragment, container, false); // 加载fragment布局
//            findViewById();

//            init();
//            setListener();
        }

        // 缓存的rootView需要判断是否已经被加过parent,
        // 如果有parent需要从parent删除,要不然会发生这个rootview已经有parent的错误。
        ViewGroup parent = (ViewGroup) layoutView.getParent();
        if (parent != null) {
            parent.removeView(layoutView);
        }
        return layoutView;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = getActivity();
        //Log.d(TAG, "onAttach");
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Log.d(TAG, "onCreate");
    }

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		
	}

//    @Override
//    protected void findViewById() {
//        mPullToRefreshListView = (PullToRefreshListView)layoutView.findViewById(R.id.business_sort_List);
//
//        // 上拉加载更多不可用
//        mPullToRefreshListView.setPullLoadEnabled(false);
//
//        // 滚动到底自动加载不可用
//        mPullToRefreshListView.setScrollLoadEnabled(true);
//    }
//
//    @Override
//    protected void setListener() {
//        mPullToRefreshListView.setOnRefreshListener(listViewOnRefreshListener);
//        mPullToRefreshListView.getRefreshableView().setOnItemClickListener(
//                listViewOnItemClickListener);
//    }
//
//    @Override
//    protected void init() {
//        currentCityCode = LocationUtil.getInstance().getCityId();
//        businessHotListAdapter = new BusinessHotListAdapter(mActivity);
//        //mListView = mPullToRefreshListView.getRefreshableView();
//
//        //mAdapter = new ShopCommentAdapter(ShopCommentListActivity.this);
//        mPullToRefreshListView.getListView().setAdapter(businessHotListAdapter);
//        mPullToRefreshListView.getListView().setDivider(null);
//        mPullToRefreshListView.doPullRefreshing(true, 0);
//    }
//
//    /**
//     * 点击item跳转相应活动详情
//     */
//    AdapterView.OnItemClickListener listViewOnItemClickListener = new AdapterView.OnItemClickListener() {
//
//        @Override
//        public void onItemClick(AdapterView parent, View view, int position,
//                                long id) {
//            BusinessListItemBean mBusinessListItemBean = businessHotListAdapter.getList().get(position);
//            String store_id = mBusinessListItemBean.getStore_id();
//            LogUtils.d(TAG, "热门排行" + " store_id=" + store_id);
//            if (!StringUtils.isBlank(store_id)) {
//                Intent intent = new Intent(mActivity, BusinessDetails.class);
//                intent.putExtra("shopId", store_id);
//                startActivity(intent);
//            }
//
//
//
//        }
//    };
//    /**
//     * 上拉刷新,到底部自动加载
//     */
//
//    PullToRefreshBase.OnRefreshListener listViewOnRefreshListener = new PullToRefreshBase.OnRefreshListener() {
//
//        @Override
//        // 下拉松手后会被调用
//        public void onPullDownToRefresh(PullToRefreshBase refreshView) {
//            if (businessHotListAdapter != null && businessHotListAdapter.getCount() > 0 && mPullToRefreshListView != null) {
//                mPullToRefreshListView.getRefreshableView().setSelection(0);// 回顶部
//            }
//
//            requstBusinessList(Constant.REQUEST_REFRESH, String.valueOf(20));
//        }
//
//        @Override
//        // 加载更多时会被调用或上拉时调用
//        public void onPullUpToRefresh(PullToRefreshBase refreshView) {
//           // int pageIndex = (businessHotListAdapter.getCount() / Constant.PAGE_SIZE) + 1;
//
//
//           // requstBusinessList(Constant.REQUEST_ALL, shopId, pageIndex, Constant.PAGE_SIZE);
//        }
//    };
//    /**
//     *
//     * @param rueqestType
//     *
//     * @param limit 请求个数限制
//     */
//    private void requstBusinessList(final int rueqestType, String limit) {
//        LogUtils.i("test", "requstBusinessList begin");
//        // initProgressDialog();
//
//        HashMap params = RequestParamsHelper.getBusinessList(currentCityCode, limit, rankType);
//        JsonObjectDefaultGetRequest req = new JsonObjectDefaultGetRequest(Urls.GET_BUSINESSLIST, params, new Response.Listener() {
//            @Override
//            public void onResponse(JSONObject response) {
//
//                LogUtils.i("test", "热门排行response:" + response);
//                if (response != null) {
//                    Message msg = Message.obtain();
//
//                    BusinessListBean businessListBean = BusinessListBean.parse(response);
//                    if (businessListBean != null) {
//                        if (businessListBean.getSta().equals("1")) {
//                            List lists = businessListBean.getLists();
//                            msg.what = Constant.HTTP_SUCCESS;
//                            msg.arg1 = Integer.valueOf(lists.size());
//                            LogUtils.i("test", "msg.arg1:" + msg.arg1);
//                            msg.arg2 = rueqestType;
//                            msg.obj = lists;
//                        } else {
//
//                                String errorMsg = businessListBean.getMsg();
//                                //ToastUtils.showOnceLongToast(mActivity, businessListBean.getMsg());
//                                msg.obj = errorMsg;
//                                msg.what = Constant.HTTP_FAIL;
//
//                        }
//                        UIHandler.sendMessage(msg);
//                    }else
//                    {
//                        UIHandler.sendEmptyMessage(Constant.HTTP_FAIL);
//                    }
//                }else
//                {
//                    UIHandler.sendEmptyMessage(Constant.HTTP_FAIL);
//                }
//            }
//
//        }, new Response.ErrorListener() {
//
//            @Override
//            public void onErrorResponse(VolleyError error) {
//                LogUtils.e(TAG, "VolleyError: " + error);
//                UIHandler.sendEmptyMessage(Constant.HTTP_FAIL);
//            }
//        });
//        BaseApplication.getInstance().addToRequestQueue(req, this);
//
//    }
//
//    private Handler UIHandler = new Handler() {
//        @Override
//        public void handleMessage(Message msg) {
//            super.handleMessage(msg);
//
//            switch (msg.what) {
//                case Constant.HTTP_SUCCESS:
//                    boolean hasMoreData = true;
//                    List list = (List) msg.obj;
//                    if (msg.arg2 == Constant.REQUEST_REFRESH) {
//                        businessHotListAdapter.clear();
//                    }
//
//                    if (msg.arg1 > 0) {
//                        businessHotListAdapter.appendToList(list);
//                        if (msg.arg1 < Constant.PAGE_SIZE || msg.arg1 <= businessHotListAdapter.getCount()) {
//                            hasMoreData = false;
//                        }
//                    } else {
//                        hasMoreData = false;
//                    }
//
//                    mPullToRefreshListView.onPullDownRefreshComplete();
//                    mPullToRefreshListView.onPullUpRefreshComplete();
//                    // true表示还有更多的数据,false表示没有更多数据了
//                    mPullToRefreshListView.setHasMoreData(hasMoreData);
//                    break;
//
//
//                case Constant.HTTP_DATA_EMPTY:// 当返回的数据为0时
//                    mPullToRefreshListView.onPullDownRefreshComplete();
//                    mPullToRefreshListView.onPullUpRefreshComplete();
//                    // true表示还有更多的数据,false表示没有更多数据了
//                    businessHotListAdapter.clear();
//                    mPullToRefreshListView.setHasMoreData(false);
//                    mPullToRefreshListView.setNotNavilableData();
//                    break;
//                case Constant.NETWORK_ERROR_MSG:
//                    mPullToRefreshListView.onPullDownRefreshComplete();
//                    mPullToRefreshListView.onPullUpRefreshComplete();
//                    String errorMsg = (String) msg.obj;
//                    if (!StringUtils.isEmpty(errorMsg)) {
//                        ToastUtils.showOnceToast(mActivity, errorMsg);
//                    }
//                    break;
//                case Constant.HTTP_FAIL:
//                    mPullToRefreshListView.onPullDownRefreshComplete();
//                    mPullToRefreshListView.onPullUpRefreshComplete();
//                    mPullToRefreshListView.setNetworkError();
//                    ToastUtils.showOnceToast(mActivity, getString(R.string.network_error));
//                    break;
//            }
//        }
//    };
//    @Override
//    public void onClick(View v) {
//
//    }





你可能感兴趣的:(使用ViewPager和布局文件完成滑动切换)