您的位置:首页 > 其它

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

2013-12-11 10:12 495 查看
from: http://blog.csdn.net/jansin_love/article/details/8964528

效果如图



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

[java] view
plaincopyprint?

MainActivity.java  

[java] view
plaincopyprint?

package com.aven.qqdemo;  

  

import java.util.ArrayList;  

import java.util.List;  

  

import android.content.res.Resources;  

import android.os.Bundle;  

import android.os.Parcelable;  

import android.support.v4.app.Fragment;  

import android.support.v4.app.FragmentActivity;  

import android.support.v4.app.FragmentManager;  

import android.support.v4.app.FragmentPagerAdapter;  

import android.support.v4.app.FragmentTransaction;  

import android.support.v4.view.ViewPager;  

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

import android.util.DisplayMetrics;  

import android.util.Log;  

import android.view.LayoutInflater;  

import android.view.View;  

import android.view.Window;  

import android.view.animation.Animation;  

import android.view.animation.TranslateAnimation;  

import android.widget.ImageView;  

import android.widget.TextView;  

  

import com.demo.R;  

  

  

public class MainActivity extends FragmentActivity {  

    private static final String TAG = "MainActivity";  

    private ViewPager mPager;  

    private ArrayList<Fragment> fragmentsList;  

    private ImageView ivBottomLine;  

    private TextView tvTabActivity, tvTabGroups, tvTabFriends, tvTabChat;  

  

    private int currIndex = 0;  

    private int bottomLineWidth;  

    private int offset = 1000;  

    private int position_one;  

    private int position_two;  

    private int position_three;  

    private Resources resources;  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        requestWindowFeature(Window.FEATURE_NO_TITLE);  

        setContentView(R.layout.main);  

        resources = getResources();  

        InitWidth();  

        InitTextView();  

        InitViewPager();  

    }  

  

    private void InitTextView() {  

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

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

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

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

  

        tvTabActivity.setOnClickListener(new MyOnClickListener(0));  

        tvTabGroups.setOnClickListener(new MyOnClickListener(1));  

        tvTabFriends.setOnClickListener(new MyOnClickListener(2));  

        tvTabChat.setOnClickListener(new MyOnClickListener(3));  

    }  

  

    private void InitViewPager() {  

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

        fragmentsList = new ArrayList<Fragment>();  

        LayoutInflater mInflater = getLayoutInflater();  

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

  

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

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

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

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

  

        fragmentsList.add(activityfragment);  

        fragmentsList.add(groupFragment);  

        fragmentsList.add(friendsFragment);  

        fragmentsList.add(chatFragment);  

          

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

        mPager.setCurrentItem(0);  

        mPager.setOnPageChangeListener(new MyOnPageChangeListener());  

    }  

  

    private void InitWidth() {  

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

        bottomLineWidth = ivBottomLine.getLayoutParams().width;  

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

        DisplayMetrics dm = new DisplayMetrics();  

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

        int screenW = dm.widthPixels;  

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

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

  

        position_one = (int) (screenW / 4.0);  

        position_two = position_one * 2;  

        position_three = position_one * 3;  

    }  

  

    public class MyOnClickListener implements View.OnClickListener {  

        private int index = 0;  

        public MyOnClickListener(int i) {  

            index = i;  

        }  

        @Override  

        public void onClick(View v) {  

            mPager.setCurrentItem(index);  

        }  

    };  

  

    public class MyOnPageChangeListener implements OnPageChangeListener {  

  

        @Override  

        public void onPageSelected(int arg0) {  

            Animation animation = null;  

            switch (arg0) {  

            case 0:  

                if (currIndex == 1) {  

                    animation = new TranslateAnimation(position_one, 0, 0, 0);  

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

                } else if (currIndex == 2) {  

                    animation = new TranslateAnimation(position_two, 0, 0, 0);  

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

                } else if (currIndex == 3) {  

                    animation = new TranslateAnimation(position_three, 0, 0, 0);  

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

                }  

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

                break;  

            case 1:  

                if (currIndex == 0) {  

                    animation = new TranslateAnimation(offset, position_one, 0, 0);  

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

                } else if (currIndex == 2) {  

                    animation = new TranslateAnimation(position_two, position_one, 0, 0);  

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

                } else if (currIndex == 3) {  

                    animation = new TranslateAnimation(position_three, position_one, 0, 0);  

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

                }  

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

                break;  

            case 2:  

                if (currIndex == 0) {  

                    animation = new TranslateAnimation(offset, position_two, 0, 0);  

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

                } else if (currIndex == 1) {  

                    animation = new TranslateAnimation(position_one, position_two, 0, 0);  

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

                } else if (currIndex == 3) {  

                    animation = new TranslateAnimation(position_three, position_two, 0, 0);  

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

                }  

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

                break;  

            case 3:  

                if (currIndex == 0) {  

                    animation = new TranslateAnimation(offset, position_three, 0, 0);  

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

                } else if (currIndex == 1) {  

                    animation = new TranslateAnimation(position_one, position_three, 0, 0);  

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

                } else if (currIndex == 2) {  

                    animation = new TranslateAnimation(position_two, position_three, 0, 0);  

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

                }  

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

                break;  

            }  

            currIndex = arg0;  

            animation.setFillAfter(true);  

            animation.setDuration(300);  

            ivBottomLine.startAnimation(animation);  

        }  

  

        @Override  

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

        }  

  

        @Override  

        public void onPageScrollStateChanged(int arg0) {  

        }  

    }  

}  

MyFragmentPagerAdapter.java

[java] view
plaincopyprint?

package com.aven.qqdemo;  

  

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);  

    }  

  

}  

TestFragment.java

[html] view
plaincopyprint?

package com.aven.qqdemo;  

  

import com.demo.R;  

  

import android.os.Bundle;  

import android.support.v4.app.Fragment;  

import android.util.Log;  

import android.view.LayoutInflater;  

import android.view.View;  

import android.view.ViewGroup;  

import android.widget.TextView;  

  

public class TestFragment extends Fragment {  

    private static final String TAG = "TestFragment";  

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

    private String defaultHello = "default value";  

  

    static TestFragment newInstance(String s) {  

        TestFragment newFragment = new TestFragment();  

        Bundle bundle = new Bundle();  

        bundle.putString("hello", s);  

        newFragment.setArguments(bundle);  

        return newFragment;  

  

    }  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

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

        Bundle args = getArguments();  

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

    }  

  

    @Override  

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

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

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

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

        viewhello.setText(hello);  

        return view;  

  

    }  

  

    @Override  

    public void onDestroy() {  

        super.onDestroy();  

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

    }  

  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: