public class MainActivity extends FragmentActivity implements OnClickListener {
// private static final String String = null;
private myPageAdapter amyPageAdapter;
private ViewPager vp;
private LinearLayout ll;
private String[] data=new String[]{"舍内要闻","本社建设","履行职能","自身建设","社员风采","历史回眸"};
private HorizontalScrollView hl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
ll = (LinearLayout) findViewById(R.id.ll);
for (int i = 0; i < data.length; i++) {
TextView tv = genetateTextView(data[i]);
tv.setId(i);
ll.addView(tv);
tv.setOnClickListener(this);
}
hl = (HorizontalScrollView) findViewById(R.id.hl);
FragmentManager fragmentManager=getSupportFragmentManager();
amyPageAdapter = new myPageAdapter(fragmentManager);
vp.setAdapter(amyPageAdapter);
vp.setCurrentItem(0);
changeTitleView(0);
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
changeTitleView(arg0);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
myscroll(arg0,arg1);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
protected void changeTitleView(int arg0) {
for (int i = 0; i < ll.getChildCount(); i++) {
TextView tv =(TextView) ll.getChildAt(i);
if(arg0==i){
tv.setBackgroundResource(R.drawable.mylayer_list);
}else{
tv.setBackgroundResource(R.drawable.writelayer);
}
}
}
//指示器跟随手指进行滚动
public void myscroll(int position, float offset) {
int tabWidth = getScreenWidth()/3;
int mTranslationX = (int) (tabWidth*(offset+position));
int mTabVisibleCount=data.length;
//但移动到倒数第二个的时候
//容器移动,当tab处于移动至最后一个时
if(position>=1&&offset>0){
//在mTabVisibleCount是1的时候
// mTabVisibleCount-2 是要用到
if(mTabVisibleCount != 1&&position!=mTabVisibleCount-2){
// Toast.makeText(this, "进行移动"+position, 1).show();
System.out.println(position+"_------");
ll.scrollTo((position-1)*tabWidth+(int)(tabWidth*offset),0);
}
}
// 进行重绘画
ll.invalidate();
}
private TextView genetateTextView(String title) {
TextView tv = new TextView(this);
LinearLayout.LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
lp.width = getScreenWidth()/3;
lp.height=100;
tv.setText(title);
tv.setGravity(Gravity.CENTER);
tv.setTextSize(16f);
tv.setLayoutParams(lp);
return tv;
}
//获得屏幕的宽度
private int getScreenWidth() {
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
//通过WindowManager获得
wm.getDefaultDisplay().getMetrics(outMetrics);
//返回屏幕的宽度
return outMetrics.widthPixels;
}
class myPageAdapter extends FragmentPagerAdapter{
public myPageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
MyFrag my=new MyFrag();
return my;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return data.length;
}
}
@Override
public void onClick(View v) {
int id = v.getId();
for (int i = 0; i < ll.getChildCount(); i++) {
TextView tv =(TextView) ll.getChildAt(i);
int tvId = tv.getId();
if(tvId==id){
tv.setBackgroundResource(R.drawable.mylayer_list);
vp.setCurrentItem(i);
}else{
tv.setBackgroundResource(R.drawable.writelayer);
}
}
}
}
---------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- <item >
<shape >
<solid android:color="#ff0000"/>
</shape>
</item> -->
<item android:top="45dp">
<shape >
<solid android:color="#000000"/>
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="3dp"/>
</shape>
</item>
</layer-list>
----------------baide
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item >
<shape >
<solid android:color="#FFFFFF"/>
</shape>
</item>
</layer-list>