用FragmentActivity模仿qq群组,好友等滑动界面切换.

效果如图

下载地址  http://download.csdn.net/my/uploads

[java] view plaincopyprint?

  1. MainActivity.java  

[java] view plaincopyprint?

  1. package com.aven.qqdemo;  

  2.   

  3. import java.util.ArrayList;  

  4. import java.util.List;  

  5.   

  6. import android.content.res.Resources;  

  7. import android.os.Bundle;  

  8. import android.os.Parcelable;  

  9. import android.support.v4.app.Fragment;  

  10. import android.support.v4.app.FragmentActivity;  

  11. import android.support.v4.app.FragmentManager;  

  12. import android.support.v4.app.FragmentPagerAdapter;  

  13. import android.support.v4.app.FragmentTransaction;  

  14. import android.support.v4.view.ViewPager;  

  15. import android.support.v4.view.ViewPager.OnPageChangeListener;  

  16. import android.util.DisplayMetrics;  

  17. import android.util.Log;  

  18. import android.view.LayoutInflater;  

  19. import android.view.View;  

  20. import android.view.Window;  

  21. import android.view.animation.Animation;  

  22. import android.view.animation.TranslateAnimation;  

  23. import android.widget.ImageView;  

  24. import android.widget.TextView;  

  25.   

  26. import com.demo.R;  

  27.   

  28.   

  29. public class MainActivity extends FragmentActivity {  

  30.     private static final String TAG = "MainActivity";  

  31.     private ViewPager mPager;  

  32.     private ArrayList<Fragment> fragmentsList;  

  33.     private ImageView ivBottomLine;  

  34.     private TextView tvTabActivity, tvTabGroups, tvTabFriends, tvTabChat;  

  35.   

  36.     private int currIndex = 0;  

  37.     private int bottomLineWidth;  

  38.     private int offset = 1000;  

  39.     private int position_one;  

  40.     private int position_two;  

  41.     private int position_three;  

  42.     private Resources resources;  

  43.   

  44.     @Override  

  45.     public void onCreate(Bundle savedInstanceState) {  

  46.         super.onCreate(savedInstanceState);  

  47.         requestWindowFeature(Window.FEATURE_NO_TITLE);  

  48.         setContentView(R.layout.main);  

  49.         resources = getResources();  

  50.         InitWidth();  

  51.         InitTextView();  

  52.         InitViewPager();  

  53.     }  

  54.   

  55.     private void InitTextView() {  

  56.         tvTabActivity = (TextView) findViewById(R.id.tv_tab_activity);  

  57.         tvTabGroups = (TextView) findViewById(R.id.tv_tab_groups);  

  58.         tvTabFriends = (TextView) findViewById(R.id.tv_tab_friends);  

  59.         tvTabChat = (TextView) findViewById(R.id.tv_tab_chat);  

  60.   

  61.         tvTabActivity.setOnClickListener(new MyOnClickListener(0));  

  62.         tvTabGroups.setOnClickListener(new MyOnClickListener(1));  

  63.         tvTabFriends.setOnClickListener(new MyOnClickListener(2));  

  64.         tvTabChat.setOnClickListener(new MyOnClickListener(3));  

  65.     }  

  66.   

  67.     private void InitViewPager() {  

  68.         mPager = (ViewPager) findViewById(R.id.vPager);  

  69.         fragmentsList = new ArrayList<Fragment>();  

  70.         LayoutInflater mInflater = getLayoutInflater();  

  71.         View activityView = mInflater.inflate(R.layout.lay1, null);  

  72.   

  73.         Fragment activityfragment = TestFragment.newInstance("Hello Activity.");  

  74.         Fragment groupFragment = TestFragment.newInstance("Hello Group.");  

  75.         Fragment friendsFragment=TestFragment.newInstance("Hello Friends.");  

  76.         Fragment chatFragment=TestFragment.newInstance("Hello Chat.");  

  77.   

  78.         fragmentsList.add(activityfragment);  

  79.         fragmentsList.add(groupFragment);  

  80.         fragmentsList.add(friendsFragment);  

  81.         fragmentsList.add(chatFragment);  

  82.           

  83.         mPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentsList));  

  84.         mPager.setCurrentItem(0);  

  85.         mPager.setOnPageChangeListener(new MyOnPageChangeListener());  

  86.     }  

  87.   

  88.     private void InitWidth() {  

  89.         ivBottomLine = (ImageView) findViewById(R.id.iv_bottom_line);  

  90.         bottomLineWidth = ivBottomLine.getLayoutParams().width;  

  91.         Log.d(TAG, "cursor imageview width=" + bottomLineWidth);  

  92.         DisplayMetrics dm = new DisplayMetrics();  

  93.         getWindowManager().getDefaultDisplay().getMetrics(dm);  

  94.         int screenW = dm.widthPixels;  

  95. //        offset = (int) ((screenW / 4.0 - bottomLineWidth) / 2);  

  96. //        Log.i("MainActivity", "offset=" + offset);  

  97.   

  98.         position_one = (int) (screenW / 4.0);  

  99.         position_two = position_one * 2;  

  100.         position_three = position_one * 3;  

  101.     }  

  102.   

  103.     public class MyOnClickListener implements View.OnClickListener {  

  104.         private int index = 0;  

  105.         public MyOnClickListener(int i) {  

  106.             index = i;  

  107.         }  

  108.         @Override  

  109.         public void onClick(View v) {  

  110.             mPager.setCurrentItem(index);  

  111.         }  

  112.     };  

  113.   

  114.     public class MyOnPageChangeListener implements OnPageChangeListener {  

  115.   

  116.         @Override  

  117.         public void onPageSelected(int arg0) {  

  118.             Animation animation = null;  

  119.             switch (arg0) {  

  120.             case 0:  

  121.                 if (currIndex == 1) {  

  122.                     animation = new TranslateAnimation(position_one, 000);  

  123.                     tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));  

  124.                 } else if (currIndex == 2) {  

  125.                     animation = new TranslateAnimation(position_two, 000);  

  126.                     tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));  

  127.                 } else if (currIndex == 3) {  

  128.                     animation = new TranslateAnimation(position_three, 000);  

  129.                     tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));  

  130.                 }  

  131.                 tvTabActivity.setTextColor(resources.getColor(R.color.white));  

  132.                 break;  

  133.             case 1:  

  134.                 if (currIndex == 0) {  

  135.                     animation = new TranslateAnimation(offset, position_one, 00);  

  136.                     tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));  

  137.                 } else if (currIndex == 2) {  

  138.                     animation = new TranslateAnimation(position_two, position_one, 00);  

  139.                     tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));  

  140.                 } else if (currIndex == 3) {  

  141.                     animation = new TranslateAnimation(position_three, position_one, 00);  

  142.                     tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));  

  143.                 }  

  144.                 tvTabGroups.setTextColor(resources.getColor(R.color.white));  

  145.                 break;  

  146.             case 2:  

  147.                 if (currIndex == 0) {  

  148.                     animation = new TranslateAnimation(offset, position_two, 00);  

  149.                     tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));  

  150.                 } else if (currIndex == 1) {  

  151.                     animation = new TranslateAnimation(position_one, position_two, 00);  

  152.                     tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));  

  153.                 } else if (currIndex == 3) {  

  154.                     animation = new TranslateAnimation(position_three, position_two, 00);  

  155.                     tvTabChat.setTextColor(resources.getColor(R.color.lightwhite));  

  156.                 }  

  157.                 tvTabFriends.setTextColor(resources.getColor(R.color.white));  

  158.                 break;  

  159.             case 3:  

  160.                 if (currIndex == 0) {  

  161.                     animation = new TranslateAnimation(offset, position_three, 00);  

  162.                     tvTabActivity.setTextColor(resources.getColor(R.color.lightwhite));  

  163.                 } else if (currIndex == 1) {  

  164.                     animation = new TranslateAnimation(position_one, position_three, 00);  

  165.                     tvTabGroups.setTextColor(resources.getColor(R.color.lightwhite));  

  166.                 } else if (currIndex == 2) {  

  167.                     animation = new TranslateAnimation(position_two, position_three, 00);  

  168.                     tvTabFriends.setTextColor(resources.getColor(R.color.lightwhite));  

  169.                 }  

  170.                 tvTabChat.setTextColor(resources.getColor(R.color.white));  

  171.                 break;  

  172.             }  

  173.             currIndex = arg0;  

  174.             animation.setFillAfter(true);  

  175.             animation.setDuration(300);  

  176.             ivBottomLine.startAnimation(animation);  

  177.         }  

  178.   

  179.         @Override  

  180.         public void onPageScrolled(int arg0, float arg1, int arg2) {  

  181.         }  

  182.   

  183.         @Override  

  184.         public void onPageScrollStateChanged(int arg0) {  

  185.         }  

  186.     }  

  187. }  


MyFragmentPagerAdapter.java

[java] view plaincopyprint?

  1. package com.aven.qqdemo;  

  2.   

  3. import java.util.ArrayList;  

  4.   

  5. import android.support.v4.app.Fragment;  

  6. import android.support.v4.app.FragmentManager;  

  7. import android.support.v4.app.FragmentPagerAdapter;  

  8.   

  9. public class MyFragmentPagerAdapter extends FragmentPagerAdapter {  

  10.     private ArrayList<Fragment> fragmentsList;  

  11.   

  12.     public MyFragmentPagerAdapter(FragmentManager fm) {  

  13.         super(fm);  

  14.     }  

  15.   

  16.     public MyFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {  

  17.         super(fm);  

  18.         this.fragmentsList = fragments;  

  19.     }  

  20.   

  21.     @Override  

  22.     public int getCount() {  

  23.         return fragmentsList.size();  

  24.     }  

  25.   

  26.     @Override  

  27.     public Fragment getItem(int arg0) {  

  28.         return fragmentsList.get(arg0);  

  29.     }  

  30.   

  31.     @Override  

  32.     public int getItemPosition(Object object) {  

  33.         return super.getItemPosition(object);  

  34.     }  

  35.   

  36. }  


TestFragment.java

[html] view plaincopyprint?

  1. package com.aven.qqdemo;  

  2.   

  3. import com.demo.R;  

  4.   

  5. import android.os.Bundle;  

  6. import android.support.v4.app.Fragment;  

  7. import android.util.Log;  

  8. import android.view.LayoutInflater;  

  9. import android.view.View;  

  10. import android.view.ViewGroup;  

  11. import android.widget.TextView;  

  12.   

  13. public class TestFragment extends Fragment {  

  14.     private static final String TAG = "TestFragment";  

  15.     private String hello;// = "hello android";  

  16.     private String defaultHello = "default value";  

  17.   

  18.     static TestFragment newInstance(String s) {  

  19.         TestFragment newFragment = new TestFragment();  

  20.         Bundle bundle = new Bundle();  

  21.         bundle.putString("hello", s);  

  22.         newFragment.setArguments(bundle);  

  23.         return newFragment;  

  24.   

  25.     }  

  26.   

  27.     @Override  

  28.     public void onCreate(Bundle savedInstanceState) {  

  29.         super.onCreate(savedInstanceState);  

  30.         Log.d(TAG, "TestFragment-----onCreate");  

  31.         Bundle args = getArguments();  

  32.         hello = args != null ? args.getString("hello") : defaultHello;  

  33.     }  

  34.   

  35.     @Override  

  36.     public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {  

  37.         Log.d(TAG, "TestFragment-----onCreateView");  

  38.         View view = inflater.inflate(R.layout.lay1, container, false);  

  39.         TextView viewhello = (TextView) view.findViewById(R.id.tv_hello);  

  40.         viewhello.setText(hello);  

  41.         return view;  

  42.   

  43.     }  

  44.   

  45.     @Override  

  46.     public void onDestroy() {  

  47.         super.onDestroy();  

  48.         Log.d(TAG, "TestFragment-----onDestroy");  

  49.     }  

  50.   

  51. }  


转载于:https://my.oschina.net/u/1777508/blog/314524

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值