使用ViewPager和布局文件完成滑动切换
来源:互联网 发布:电脑淘宝图片尺寸 编辑:程序博客网 时间:2024/05/22 03:20
1.首先是主页面的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/ii_lottery_category" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#f6f6f6" android:orientation="horizontal" > <TextView android:id="@+id/hot_list_Tv" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center_horizontal" android:paddingBottom="14dp" android:text="a1" android:textSize="13sp" /> <TextView android:id="@+id/collection_list_Tv" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center_horizontal" android:paddingBottom="14dp" android:text="a2" android:textSize="13sp" /> <TextView android:id="@+id/sales_list_Tv" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:gravity="center_horizontal" android:paddingBottom="14dp" android:text="a3" android:textSize="13sp" /> </LinearLayout> <ImageView android:id="@+id/ii_category_selector" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="matrix" android:src="@drawable/id_category_selector" /> <android.support.v4.view.ViewPager android:id="@+id/business_list_viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFFFFF" > </android.support.v4.view.ViewPager></LinearLayout>
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<Fragment> pagers;private int currentPage = 0; // 当前viewpager页面private Context context;@Overrideprotected 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<Fragment>();// 热门排行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() {@Overridepublic 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;}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}};@Overridepublic 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<Fragment> pagers; public BusinessRankAdapter(FragmentManager fm, ArrayList<Fragment> 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的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="页面一" android:textSize="20sp"/></LinearLayout>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"); }@Overridepublic 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<ListView> listViewOnRefreshListener = new PullToRefreshBase.OnRefreshListener<ListView>() {//// @Override// // 下拉松手后会被调用// public void onPullDownToRefresh(PullToRefreshBase<ListView> 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<ListView> 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<String, String> params = RequestParamsHelper.getBusinessList(currentCityCode, limit, rankType);// JsonObjectDefaultGetRequest req = new JsonObjectDefaultGetRequest(Urls.GET_BUSINESSLIST, params, new Response.Listener<JSONObject>() {// @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<BusinessListItemBean> 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<BusinessListItemBean> list = (List<BusinessListItemBean>) 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) {//// }
0 0
- 使用ViewPager和布局文件完成滑动切换
- 使用ViewPager和布局文件完成滑动切换
- 使用ViewPager和TabHost切换布局
- android使用viewPager和Fragment实现滑动切换activity!
- 解决TabLayout+viewpager 滑动切换时 布局文件不是从头显示
- 滑动实现多个布局的切换——ViewPager的使用
- 使用ViewPager和Fragment同时实现点击底部Tab切换和手势滑动切换Fragment
- 使用ViewPager进行页面滑动切换
- ViewPager滑动和点击切换内容
- FragmentPagerAdapter和ViewPager实现滑动切换
- Viewpager和Fragment点击滑动切换
- Android 使用ViewPager和RadioGroup配合Fragment实现标签页,可点击按钮切换、滑动切换。
- ViewPager禁止滑动切换和去除切换时动画效果
- ViewPager滑动切换界面
- ViewPager的滑动切换
- ViewPager 滑动切换 activity
- ViewPager页面滑动切换
- ViewPager滑动切换禁用
- Android疯狂猜歌游戏之---------主界面布局
- 从ffmpeg源代码分析如何解决ffmpeg编码的延迟问题
- android重写listview使用addHeaderView和addFooterView注意事项
- 数据库要点
- Tslib中触摸屏校准原理及其实现
- 使用ViewPager和布局文件完成滑动切换
- background-position(大图抠小图)
- java - JDBC - Techniques
- 第三章第七题(2)
- Intellij IDEA 编译错误
- Bayesian举例
- Laravel Lumen
- ubuntu下安装arm-linux-gcc-3.3.2,搭建交叉编译环境并设置路径
- java 迭代器