work_weipa_viewpager
来源:互联网 发布:南阳企业网站排名优化 编辑:程序博客网 时间:2024/05/16 12:43
问题1:viewpager如何实现左右滑动和点击切换功能?
回答:adapter+layout+fragment
例子:①布局文件
fragment_login.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#d0d0d0" android:orientation="vertical" > <LinearLayout android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="45dp" android:background="#ffffff" android:gravity="center" android:paddingTop="10dp" > <TextView android:id="@+id/tv_tab_1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="我发表的" android:textColor="#000000" android:textSize="18sp" /> <ImageView android:layout_width="1dp" android:layout_height="20dp" android:layout_gravity="center" android:src="@drawable/dividegrey"/> <TextView android:id="@+id/tv_tab_2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="关于软件" android:textColor="#000000" android:textSize="18sp" /> <ImageView android:layout_width="1dp" android:layout_height="20dp" android:layout_gravity="center" android:src="@drawable/dividegrey"/> <TextView android:id="@+id/tv_tab_3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:gravity="center" android:text="登录软件" android:textColor="#000000" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:orientation="vertical" android:paddingBottom="3dp" > <ImageView android:id="@+id/iv_bottom_line" android:layout_width="100dp" android:layout_height="2dp" android:scaleType="matrix" android:src="@drawable/below" /> </LinearLayout> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/vPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_gravity="center" android:layout_weight="1.0" android:background="#ffffff" android:flipInterval="30" android:persistentDrawingCache="animation" /></LinearLayout>
②adapter文件
MyFragmentPagerAdapter.java
package com.example.weipa.adapter;import java.util.ArrayList;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;public class MyFragmentPagerAdapter extends FragmentPagerAdapter { private ArrayList<Fragment> fragmentsList; public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) { super(fm); this.fragmentsList = fragments; } @Override public int getCount() { return fragmentsList.size(); } @Override public Fragment getItem(int arg0) { return fragmentsList.get(arg0); } @Override public int getItemPosition(Object object) { return super.getItemPosition(object); }}
③实现
LoginFragment.java
public class LoginFragment extends Fragment {Resources resources;private ViewPager mPager;private ArrayList<Fragment> fragmentsList;private ImageView ivBottomLine;private TextView tvTab1, tvTab2, tvTab3;private int currIndex = 0;private int bottomLineWidth;private int offset = 0;private int position_one;private int position_two;public final static int num = 3;Fragment login1;Fragment login2;Fragment login3;private String username;private Activity activity;@Overridepublic void onAttach(Activity activity) {super.onAttach(activity);this.activity = activity;}public LoginFragment() {}public LoginFragment(String username) {this.username = username;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// TODO Auto-generated method stubView view = inflater.inflate(R.layout.fragment_login, container, false);MainActivity mainActivity=(MainActivity) activity;mainActivity.getUserId();this.resources = getResources();mPager = (ViewPager) view.findViewById(R.id.vPager);login1 = new LoginFragment1();login2 = new LoginFragment2();login3 = new LoginFragment3(this.username);tvTab1 = (TextView) view.findViewById(R.id.tv_tab_1);tvTab2 = (TextView) view.findViewById(R.id.tv_tab_2);tvTab3 = (TextView) view.findViewById(R.id.tv_tab_3);initWidth(view);initTextView(view);initViewPager(view);TranslateAnimation animation = new TranslateAnimation(offset,position_two, 0, 0);animation.setFillAfter(true);animation.setDuration(30);ivBottomLine.startAnimation(animation);return view;}public void initTextView(View parentView) {// TODO Auto-generated method stubtvTab1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmPager.setCurrentItem(0);}});tvTab2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmPager.setCurrentItem(1);}});tvTab3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubmPager.setCurrentItem(2);}});}private void initViewPager(View parentView) {fragmentsList = new ArrayList<Fragment>();fragmentsList.add(login1);fragmentsList.add(login2);fragmentsList.add(login3);mPager.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(),fragmentsList));mPager.setOnPageChangeListener(new MyOnPageChangeListener());mPager.setCurrentItem(2);}private void initWidth(View parentView) {ivBottomLine = (ImageView) parentView.findViewById(R.id.iv_bottom_line);bottomLineWidth = ivBottomLine.getLayoutParams().width;DisplayMetrics dm = new DisplayMetrics();getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);int screenW = dm.widthPixels;offset = (int) ((screenW / num - bottomLineWidth) / 2);int avg = (int) (screenW / num);position_one = avg + offset-8;position_two = 2 * avg + offset-18;}public class MyOnPageChangeListener implements OnPageChangeListener {@Overridepublic void onPageSelected(int arg0) {Animation animation = null;switch (arg0) {case 0:if (currIndex == 1) {animation = new TranslateAnimation(position_one, offset, 0,0);}if (currIndex == 2) {animation = new TranslateAnimation(position_two, offset, 0,0);}break;case 1:if (currIndex == 0) {animation = new TranslateAnimation(offset, position_one, 0,0);}if (currIndex == 2) {animation = new TranslateAnimation(position_two,position_one, 0, 0);}break;case 2:if (currIndex == 1) {animation = new TranslateAnimation(position_one,position_two, 0, 0);}if (currIndex == 0) {animation = new TranslateAnimation(offset, position_two, 0,0);}break;default:break;}currIndex = arg0;animation.setFillAfter(true);animation.setDuration(30);ivBottomLine.startAnimation(animation);}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageScrollStateChanged(int arg0) {}}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
图示:
0 0
- work_weipa_viewpager
- work_weipa_viewpager
- work_weipa_viewpager
- work_weipa_viewpager
- work_weipa_viewpager
- work_weipa_viewpager
- MyEclipse6.5安装SVN插件
- C#winform窗体中如何点击移动某个控件来移动窗体
- xml文件的读取
- vimrc 转自 http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
- 利用FILTER特性优化SQL
- work_weipa_viewpager
- jQuery.extend 函数详解
- swing timer用法一:实现图片滑动,遇见窗口边界弹回
- Subsets II
- LeetCode-Sqrt(x)
- UVA - 10970 Big Chocolate
- hdu-2522-A simple problem
- 【WeifenLuo.WinFormsUI.Docking】的个人小结,逐步完善中
- 索引-数论