最近接触左右划屏,从网上搜了一些资料,学习了一下,觉得不错,总结一下。
效果图如下,可以实现左右划屏
先说一下思路:
1.创建一个.java文件,继承Fragment
2.创建onCreateView()方法
3.将主页面的布局放在onCreateView中
View view = inflater.inflate(R.layout.fragment_userinfo, null);
return view;
4.初始化TextView,并且监听
textView1 = (TextView) view.findViewById(R.id.text1);
textView2 = (TextView) view.findViewById(R.id.text2);
textView3 = (TextView) view.findViewById(R.id.text3);
textView1.setOnClickListener(new MyOnClickListener(0));
textView2.setOnClickListener(new MyOnClickListener(1));
textView3.setOnClickListener(new MyOnClickListener(2));
5.初始化ImageView,并计算滑动数据
private void InitImageView(LayoutInflater inflater,View view) {
imageView = (ImageView) view.findViewById(R.id.cursor);
bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a)
.getWidth();// 获取图片宽度
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenW = dm.widthPixels;// 获取分辨率宽度
offset = (screenW / 3 - bmpW) / 2;// 计算偏移量
Matrix matrix = new Matrix();
matrix.postTranslate(offset, 0);
imageView.setImageMatrix(matrix);// 设置动画初始位置
}
只贴一下主要的代码:
public class UserInfoFragment extends Fragment {
private ViewPager viewPager;// 页卡内容
private ImageView imageView;// 动画图片
private TextView textView1, textView2, textView3;
private List
views;// Tab页面列表
private List
fragments;// Tab页面列表 private int offset = 0;// 动画图片偏移量 private int currIndex = 0;// 当前页卡编号 private int bmpW;// 动画图片宽度 private View view1, view2, view3;// 各个页卡 private Fragment fragment; private FragmentManager fragmentManager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (Util.get
AndroidSDKVersion() >= 4) { fragment = new UserInfoSettingFragment(); fragmentManager = getChildFragmentManager(); } View view = inflater.inflate(R.layout.fragment_userinfo, null); InitImageView(inflater,view); InitTextView(view); InitViewPager(inflater,view); return view; } private void InitViewPager(LayoutInflater inflater,View view) { viewPager = (ViewPager) view.findViewById(R.id.vPager); views = new ArrayList
(); fragments=new ArrayList
(); fragments.add(new UserInfoSettingFragment()); fragments.add(new UserInfoMesFragment()); fragments.add(new NurseQuFragment()); viewPager.setAdapter(new MyFragmentAdpter(fragments,fragmentManager)); viewPager.setCurrentItem(0); viewPager.setOnPageChangeListener(new MyOnPageChangeListener()); } /** * 初始化头标 */ private void InitTextView(View view) { textView1 = (TextView) view.findViewById(R.id.text1); textView2 = (TextView) view.findViewById(R.id.text2); textView3 = (TextView) view.findViewById(R.id.text3); textView1.setOnClickListener(new MyOnClickListener(0)); textView2.setOnClickListener(new MyOnClickListener(1)); textView3.setOnClickListener(new MyOnClickListener(2)); } /** * 2 * 初始化动画,这个就是页卡滑动时,下面的横线也滑动的效果,在这里需要计算一些数据 3 */ private void InitImageView(LayoutInflater inflater,View view) { imageView = (ImageView) view.findViewById(R.id.cursor); bmpW = BitmapFactory.decodeResource(getResources(), R.drawable.a) .getWidth();// 获取图片宽度 DisplayMetrics dm = new DisplayMetrics(); getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm