亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android HorizontalScrollView滑動(dòng)與ViewPager切換案例詳解

 更新時(shí)間:2021年08月28日 09:28:39   作者:豆豆呢  
這篇文章主要介紹了Android HorizontalScrollView滑動(dòng)與ViewPager切換案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

layout布局

<RelativeLayout 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"
    tools:context=".MainActivity" >

    <HorizontalScrollView
        android:id="@+id/sc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none" >

        <LinearLayout
            android:id="@+id/line_sc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
        </LinearLayout>
    </HorizontalScrollView>

    <LinearLayout
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/sc"
      />

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

</RelativeLayout>

 MainActivity.java

package com.bwie.test;
import java.util.ArrayList;
import com.bwie.adapter.MyAdapter;
import com.bwie.fragment.F1;
import com.bwie.utils.Myutil;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
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.util.DisplayMetrics;
import android.view.Menu;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {

    private LinearLayout line_sc;
    private HorizontalScrollView sc;
    private String[] column = new String[] { "舍內(nèi)要聞", "本社介紹", "履行職能", "自身建設(shè)",
            "社員風(fēng)采", "自我介紹", "校內(nèi)趣聞", "爆料" };
    private ArrayList<Fragment> list;
    private ViewPager vp;
    private int widthPixels;
    private ArrayList<TextView> list_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /**
         * 獲取窗口的 寬度
         */
        // 創(chuàng)建DisplayMetrics類對象
        DisplayMetrics dm = new DisplayMetrics();
        // 將當(dāng)前窗口的一些信息放在DisplayMetrics類中
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        widthPixels = dm.widthPixels;     
        // 初始化數(shù)據(jù)
        init();
        // 獲取欄目的數(shù)據(jù)
        getColumn();
        // 創(chuàng)建fragment數(shù)據(jù)
        setFragment();
        // 為vp設(shè)置數(shù)據(jù)
        FragmentManager fm = getSupportFragmentManager();
        vp.setAdapter(new MyAdapter(fm, list));        
        setTitle_1(vp.getCurrentItem());

        // 為vp設(shè)置頁面滑動(dòng)監(jiān)聽
        vp.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {               
                //設(shè)置游標(biāo)
                setTitle_1(arg0);               
                //設(shè)置滑動(dòng)
                setAutoScroll(arg0);
            }
        
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub
            }
            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub
            }
        });

    }

    protected void setAutoScroll(int p) {
        // TODO Auto-generated method stub
        
        //獲取當(dāng)前要展示的游標(biāo)
        TextView textView = list_view.get(p);
        //獲取其寬度
        int w = textView.getMeasuredWidth();
        int left = textView.getLeft();
        int address=left-widthPixels/2;       
        sc.smoothScrollTo(address, 0);                  
    }

    private void setFragment() {
        // 創(chuàng)建集合存放fragment對象
        list = new ArrayList<Fragment>();
        for (int i = 0; i < column.length; i++) {
            F1 f1 = new F1();
            // 傳值
            Bundle b = new Bundle();
            b.putInt("column", i);
            f1.setArguments(b);
            // 將創(chuàng)建的fragment添加到集合中
            list.add(f1);
        }
    }
    private void setTitle_1(int arg0) {
        //設(shè)置當(dāng)前顯示的textview控件
        TextView textView = list_view.get(arg0);
        //將當(dāng)前的textview顯示
        textView.setVisibility(View.VISIBLE);     
        for(int i=0;i<list_view.size();i++)
        {
            TextView tv = list_view.get(i);
            
            if(tv!=textView)
            {
                tv.setVisibility(View.GONE);
            }
        }
    }
    private void getColumn() {
        // TODO Auto-generated method stub
        list_view = new ArrayList<TextView>();
        for (int i = 0; i < column.length; i++) {
            // 創(chuàng)建線性布局來整體作為水平滾動(dòng)的子布局
            LinearLayout sc = new LinearLayout(MainActivity.this);
            // 設(shè)置線性布局的排列方式(垂直)
            sc.setOrientation(1);
            sc.setPadding(30, 0, 0, 0);
            // 1.首先向線性布局中添加textview
            // 創(chuàng)建textview
            TextView tv = new TextView(MainActivity.this);
            // 為tv設(shè)置數(shù)據(jù)
            tv.setText(column[i]);
            LinearLayout.LayoutParams params = new LayoutParams(
                    widthPixels / 5, LayoutParams.WRAP_CONTENT);
            sc.addView(tv, params);

            // 2.向線性布局中添加下面的橫線
            TextView tv_line = new TextView(MainActivity.this);
            LinearLayout.LayoutParams params_2 = new LayoutParams(
                    widthPixels / 5, 10);
            tv_line.setBackgroundColor(Color.GRAY);
            tv_line.setVisibility(View.INVISIBLE);
            list_view.add(tv_line);
            sc.addView(tv_line, params_2);

            // 將數(shù)據(jù)添加到 線性布局中
            line_sc.addView(sc);
        }

    }

    private void init() {
        line_sc = (LinearLayout) findViewById(R.id.line_sc);
        sc = (HorizontalScrollView) findViewById(R.id.sc);
        vp = (ViewPager) findViewById(R.id.vp);
    }
}

horizontalScrollView viewpager  字體顏色   滑動(dòng)距離

FragmentManager fm = getSupportFragmentManager();
        viewPager.setAdapter(new MyFragmentAdapter(fm, getData()));
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                setTag(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

            }
        });

public ArrayList<Fragment> getData() {

        ArrayList<Fragment> list = new ArrayList<Fragment>();
        for (int i = 0; i < str.length; i++) {
            list.add(new F1(str[i]));
        }
        return list;
    }

    private void setData() {
        // TODO Auto-generated method stub
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < str.length; i++) {
            View view = View.inflate(MainActivity.this,
                    android.R.layout.simple_list_item_1, null);
            TextView textView = (TextView) view
                    .findViewById(android.R.id.text1);
            list.add(str[i]);
            textView.setText(list.get(i));
            scroll_ly.addView(view);

            textView.setTag(i);
            textView.setOnClickListener(this);
        }
        TextView childAt = (TextView) scroll_ly.getChildAt(0);
        // childAt.setTextColor(Color.RED);
        childAt.setBackgroundColor(Color.RED);
        childAt.setTextColor(Color.WHITE);
    }

// 設(shè)置scrollview中textview的變化
    public void setTag(int position) {
        for (int i = 0; i < scroll_ly.getChildCount(); i++) {
            /**
             * textView滑動(dòng)的位置
             */
            // 獲取textview的viewpager滑動(dòng)的當(dāng)前子類
            TextView textView = (TextView) scroll_ly.getChildAt(position);
            int k = textView.getMeasuredWidth();
            int l = textView.getLeft();
            int s = k / 2 + l - wid / 2;
            // 設(shè)置scrollView x軸的距離
            scrollView.smoothScrollTo(s, 0);
            /**
             * textview滑動(dòng)變色
             */
            TextView textView2 = (TextView) scroll_ly.getChildAt(i);
            if (position == i) {
                textView2.setBackgroundColor(Color.RED);
                textView2.setTextColor(Color.WHITE);
            } else {
                textView2.setTextColor(Color.BLACK);
                textView2.setBackgroundColor(Color.WHITE);
            }

        }
    }

    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (v.getTag() != null) {
            int i = (Integer) v.getTag();
            View childAt = scroll_ly.getChildAt(i);
            if (v == childAt) {
                viewPager.setCurrentItem(i);
            }
        }
    }

到此這篇關(guān)于Android HorizontalScrollView滑動(dòng)與ViewPager切換案例詳解的文章就介紹到這了,更多相關(guān)Android HorizontalScrollView滑動(dòng)與ViewPager切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android Drawable和Bitmap的轉(zhuǎn)換實(shí)例詳解

    Android Drawable和Bitmap的轉(zhuǎn)換實(shí)例詳解

    這篇文章主要介紹了Android Drawable和Bitmap的轉(zhuǎn)換實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)

    Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn)

    這篇文章主要介紹了Flutter 和 Android 互相傳遞數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • android自定義等級評分圓形進(jìn)度條

    android自定義等級評分圓形進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了android自定義等級評分圓形進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android 一些常用的混淆Proguard

    Android 一些常用的混淆Proguard

    這篇文章主要介紹了Android 一些常用的混淆Proguard,幫助大家更好的理解和使用Android,感興趣的朋友可以了解下
    2021-02-02
  • Android控件系列之ImageView使用方法

    Android控件系列之ImageView使用方法

    Android控件系列之ImageView使用方法,學(xué)習(xí)android的朋友可以參考下
    2012-11-11
  • Flutter實(shí)現(xiàn)彈窗攔截器的示例代碼

    Flutter實(shí)現(xiàn)彈窗攔截器的示例代碼

    彈窗的排隊(duì)執(zhí)行在App中是一個(gè)很常見的應(yīng)用場景,這篇文章為大家介紹了兩個(gè)Flutter實(shí)現(xiàn)彈窗攔截器的示例代碼,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-09-09
  • MobLink Android端業(yè)務(wù)場景簡單說明

    MobLink Android端業(yè)務(wù)場景簡單說明

    這篇文章主要介紹了MobLink Android端業(yè)務(wù)場景簡單說明,MobLink的功能實(shí)現(xiàn)就是在分享前會(huì)將鏈接的參數(shù)信息保存到服務(wù)器,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • Android 使用【AIDL】調(diào)用外部服務(wù)的解決方法

    Android 使用【AIDL】調(diào)用外部服務(wù)的解決方法

    本篇文章是對Android中使用AIDL調(diào)用外部服務(wù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android 顯示和隱藏輸入法實(shí)現(xiàn)代碼

    Android 顯示和隱藏輸入法實(shí)現(xiàn)代碼

    本文所要介紹的這個(gè)方法可以轉(zhuǎn)換軟件輸入法在窗體中的顯示狀態(tài),具體實(shí)現(xiàn)代碼如下,感興趣的你可以參考下哈,希望可以幫助到你
    2013-03-03
  • RxJava兩步打造華麗的Android引導(dǎo)頁

    RxJava兩步打造華麗的Android引導(dǎo)頁

    如今,移動(dòng)應(yīng)用對首次使用的用戶呈現(xiàn)歡迎頁已經(jīng)越來越普遍了。這樣做的目的就是向用戶介紹并展示我們的應(yīng)用。本文給Android開發(fā)的引導(dǎo)頁面提供了很多參考,非常值得一讀。
    2016-07-07

最新評論