ScrollView横向滑动与fragment的联动

package com.bwie.test.zhangyajie20160321;

import java.util.ArrayList;
import java.util.List;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.bwie.test.adapter.Adapter;
import com.bwie.test.fragment.F1;
import com.ce.zhangyajie20160321.R;

public class MainActivity extends FragmentActivity {
    String[] strs = { "舍内要闻", "本社介绍", "履行职能", "自身建设", "社员风采", "历史回眸" };
    private LinearLayout ll;
    private HorizontalScrollView sv;
    private ViewPager vp;
    int s = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 初始化控件
        initView();
        // 设置横向滑动
        setScrollView();
        // 设置viewpager
        setViewPager();
    }

    // 设置viewpager
    private void setViewPager() {

        // 得到管理者
        FragmentManager fm = getSupportFragmentManager();

        // 创建集合
        List<Fragment> list = new ArrayList<Fragment>();
        for (int i = 0; i < strs.length; i++) {

            F1 f1 = new F1();

            String url = "http://www.93.gov.cn/93app/data.do?channelId=2&&startNum="
                    + i;
            Bundle bundle = new Bundle();
            bundle.putString("url", url);
            f1.setArguments(bundle);
            list.add(f1);
        }
        vp.setAdapter(new Adapter(fm, list));

        // 给viewpager设置监听
        vp.setOnPageChangeListener(new OnPageChangeListener() {

            public void onPageSelected(int arg0) {
                // 设置滑动字体的变化
                setTextColor(arg0);

            }

            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }
        });

    }

    // 设置字体
    private void setTextColor(int position) {
        for (int i = 0; i < strs.length; i++) {

            // 得到所有的textview
            TextView tt = (TextView) ll.getChildAt(i);
            // 得到当前对应的textview
            TextView t = (TextView) ll.getChildAt(position);

            t.setTextColor(Color.RED);
            if (!tt.equals(t)) {

                tt.setTextColor(Color.BLACK);
            }

            for (int j = 0; j < strs.length; j++) {
                // 得到屏幕宽度
                int width = getWindowManager().getDefaultDisplay().getWidth();
                int left = t.getLeft();
                int width2 = t.getWidth();
                sv.smoothScrollTo(left + width2 / 2 - width / 2, 0);
            }
        }

    }

    // 设置横向滑动
    @SuppressWarnings("deprecation")
    private void setScrollView() {

        for (int i = 0; i < strs.length; i++) {

            // 创建Textview
            TextView textView = new TextView(this);

            if (s == i) {
                textView.setTextColor(Color.RED);
            }
            textView.setText(strs[i]);
            textView.setPadding(20, 20, 20, 20);
            ll.addView(textView);

        }

    }

    private void initView() {
        // 找到控件
        ll = (LinearLayout) findViewById(R.id.ll);
        sv = (HorizontalScrollView) findViewById(R.id.sv);
        vp = (ViewPager) findViewById(R.id.vp);

    }

}

 

 

xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <HorizontalScrollView
        android:id="@+id/sv"
        android:layout_width="match_parent"
        android:layout_height="50dp" >

        <LinearLayout
            android:id="@+id/ll"
            android:layout_width="match_parent"
            android:layout_height="50dp" >
        </LinearLayout>
    </HorizontalScrollView>

    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </android.support.v4.view.ViewPager>

</LinearLayout>

posted on 2016-04-01 11:03  天空很大,我们很小  阅读(352)  评论(0编辑  收藏  举报