80,490
社区成员
发帖
与我相关
我的任务
分享

package com.example.viewpagertabtest;
import java.util.*;
import android.app.*;
import android.graphics.*;
import android.os.*;
import android.support.v13.app.*;
import android.support.v4.view.*;
import android.support.v4.view.ViewPager.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
public class MainActivity extends Activity implements OnClickListener {
private ViewPager mPager;
private FragmentPagerAdapter mAdapter;
private TextView mTab1, mTab2, mTab3, mTab4;
private List<Fragment> mList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
initEvent();
// 设置切换监听器
mPager.setOnPageChangeListener(new OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
resetAllTab();
selector(position);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageScrollStateChanged(int state)
{
}
});
// 设置ViewPager的切换动画,3.0以上版本有效
mPager.setPageTransformer(false, new PageTransformer()
{
private static final float MIN_SCALE = 0.2f;
@Override
public void transformPage(View page, float position)
{
int pageWidth = page.getWidth();
//左侧不可见Pager
if(position < -1)
{
page.setAlpha(0);
page.setRotationY(0);
}
//左侧可见Pager
else if(position <= 0)
{
page.setAlpha(1);
page.setTranslationX(0);
page.setScaleX(1);
page.setScaleY(1);
page.setRotationY(0);
}
//右侧可见Pager
else if(position <= 1)
{
page.setAlpha(1 - position);
page.setPivotX(page.getMeasuredWidth()/2);
page.setPivotY(page.getMeasuredHeight()/2);
page.setRotationY(position * 180);
page.setTranslationX(pageWidth * -position);
float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
page.setScaleX(scaleFactor);
page.setScaleY(scaleFactor);
}
//右侧不可见Pager
else
{
page.setAlpha(0);
page.setRotationY(180);
}
}
});
}
//初始化 View
private void initView()
{
mTab1 = (TextView)findViewById(R.id.weixin);
mTab2 = (TextView)findViewById(R.id.friend);
mTab3 = (TextView)findViewById(R.id.address);
mTab4 = (TextView)findViewById(R.id.setting);
mList = new ArrayList<Fragment>();
mList.add(new Fragment1());
mList.add(new Fragment2());
mList.add(new Fragment3());
mList.add(new Fragment4());
mAdapter = new MyAdapter(getFragmentManager(), mList);
mPager = (ViewPager)findViewById(R.id.view_pager);
mPager.setAdapter(mAdapter);
//mPager.setOffscreenPageLimit(3);
}
//初始化监听事件
private void initEvent()
{
mTab1.setOnClickListener(this);
mTab2.setOnClickListener(this);
mTab3.setOnClickListener(this);
mTab4.setOnClickListener(this);
}
//点击事件处理
@Override
public void onClick(View v)
{
resetAllTab();
switch(v.getId())
{
case R.id.weixin:
selector(0);
mPager.setCurrentItem(0, false);
break;
case R.id.friend:
selector(1);
mPager.setCurrentItem(1, false);
break;
case R.id.address:
selector(2);
mPager.setCurrentItem(2, false);
break;
case R.id.setting:
selector(3);
mPager.setCurrentItem(3, false);
break;
}
}
//复位所有底部按钮状态
private void resetAllTab()
{
mTab1.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_weixin_normal, 0, 0);
mTab1.setTextColor(Color.WHITE);
mTab2.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_find_frd_normal, 0, 0);
mTab2.setTextColor(Color.WHITE);
mTab3.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_address_normal, 0, 0);
mTab3.setTextColor(Color.WHITE);
mTab4.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_settings_normal, 0, 0);
mTab4.setTextColor(Color.WHITE);
}
//底部按钮状态选择器
private void selector(int position)
{
switch(position)
{
case 0:
mTab1.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_weixin_pressed, 0, 0);
mTab1.setTextColor(Color.GREEN);
break;
case 1:
mTab2.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_find_frd_pressed, 0, 0);
mTab2.setTextColor(Color.GREEN);
break;
case 2:
mTab3.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_address_pressed, 0, 0);
mTab3.setTextColor(Color.GREEN);
break;
case 3:
mTab4.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.tab_settings_pressed, 0, 0);
mTab4.setTextColor(Color.GREEN);
break;
}
}
}
package com.example.viewpagertabtest;
import android.os.*;
import android.util.*;
import android.view.*;
import android.app.*;
public class Fragment1 extends Fragment {
@Override
public void onAttach(Activity activity)
{
Log.i("Fragment1", "绑定");
super.onAttach(activity);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Log.i("Fragment1", "显示");
return inflater.inflate(R.layout.fragment1, container, false);
}
@Override
public void onDestroyView()
{
Log.i("Fragment1", "不显示");
super.onDestroyView();
}
@Override
public void onDestroy()
{
Log.i("Fragment1", "销毁");
super.onDestroy();
}
@Override
public void onDetach()
{
Log.i("Fragment1", "解绑定");
super.onDetach();
}
}
package com.example.viewpagertabtest;
import java.util.*;
import android.app.*;
import android.support.v13.app.*;
public class MyAdapter extends FragmentPagerAdapter {
private List<Fragment> mList;
public MyAdapter(FragmentManager fm, List<Fragment> list)
{
super(fm);
mList = list;
}
@Override
public Fragment getItem(int position)
{
return mList.get(position);
}
@Override
public int getCount()
{
return mList.size();
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//相当于Fragment的onResume
Log.e(TAG, "[MainFragment] setUserVisibleHint Resume");
} else {
//相当于Fragment的onPause
Log.e(TAG, "[MainFragment] setUserVisibleHint Pause");
}
}
