国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android動態給ViewPager添加Indicator導航

2019-12-12 03:38:19
字體:
來源:轉載
供稿:網友

先看下效果

小圓點的形狀和顏色都是可以自己定義的,看需求

首先第一步,滑2個圓點,一個是選中后的圓點,一個是未選中的圓點,看選中的圓點shape

<?xml version="1.0" encoding="utf-8"?><shape  xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="oval"  >  <solid android:color="@color/colorPrimary"/></shape>

未選中的

<?xml version="1.0" encoding="utf-8"?><shape  xmlns:android="http://schemas.android.com/apk/res/android"  android:shape="oval"  >  <solid android:color="@color/colorAccent"/></shape>

是不是很簡單,就指定一個圓形,一個顏色

接下來就是定義一個selector,用來控制選中和非選中

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">  <item android:drawable="@drawable/indicator_checked_shape" android:state_enabled="true"/>  <item android:drawable="@drawable/indicator_unchecked_shape" android:state_enabled="false"/></selector>

然后就是mainActivity的布局文件,放置一個ViewPager,下面放置一個LinearLayout,用來裝小圓點

<?xml version="1.0" encoding="utf-8"?><RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:id="@+id/activity_main"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.duanlian.viewpagerindicatordemo.MainActivity">  <android.support.v4.view.ViewPager    android:id="@+id/viewpager"    android:layout_width="match_parent"    android:layout_height="170dp"    />  <LinearLayout    android:id="@+id/linear"    android:layout_width="match_parent"    android:layout_height="40dp"    android:layout_below="@+id/viewpager"    android:layout_marginTop="-40dp"    android:gravity="center"    android:orientation="horizontal"></LinearLayout></RelativeLayout>

接下來就是MainActivity的代碼,其實很簡單,都有注釋,就不細說了

package com.duanlian.viewpagerindicatordemo;import android.os.Bundle;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.widget.ImageView;import android.widget.LinearLayout;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {  private ViewPager mViewPager;  private LinearLayout mLinear;  private List<ImageView> mList;  private PagerAdapter mPagerAdapter;  private int[] imageArray = {R.mipmap.banner1, R.mipmap.banner2, R.mipmap.banner3, R.mipmap.ic_launcher};  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();    initPoint();  }  private void initView() {    mViewPager = (ViewPager) findViewById(R.id.viewpager);    mLinear = (LinearLayout) findViewById(R.id.linear);    //給ViewPager添加圖片顯示    mList = new ArrayList<>();    for (int i = 0; i < imageArray.length; i++) {      ImageView imageView = new ImageView(this);      imageView.setImageResource(imageArray[i]);      mList.add(imageView);    }    mPagerAdapter = new PagerAdapter(mList);    mViewPager.setAdapter(mPagerAdapter);    //ViewPager切換的監聽事件    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {      @Override      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {        position = position % mList.size();// 需要對position的值進行重新賦值,否則會造成數組越界        // 更新小圓點的顯示        for (int i = 0; i < mList.size(); i++) {          ImageView iv = (ImageView) mLinear.getChildAt(i);          // 當前滑到的是那一頁就讓第幾個小圓點處于選中狀態          if (position == i) {            iv.setEnabled(true);          } else {            iv.setEnabled(false);          }        }      }      @Override      public void onPageSelected(int position) {      }      @Override      public void onPageScrollStateChanged(int state) {      }    });  }  /**   * 初始化指示器   */  private void initPoint() {    for (int i = 0; i < mList.size(); i++) {      // 往llContainer添加一個小圓點      ImageView iv = new ImageView(this);      //設置背景      iv.setImageResource(R.drawable.indicator_viewpager_selector);      //設置原點大小      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(30, 30);      //如果是切好的圖片就直接自適應//      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);      iv.setLayoutParams(params);      // 默認第0個小圓點顯示紅色      if (i == 0) {        iv.setEnabled(true);      } else {        iv.setEnabled(false);      }      //設置原點之間的間距      iv.setPadding(5, 5, 5, 5);      //添加到LinearLayout中      mLinear.addView(iv);    }  }}

最后附上ViewPager的adapter

package com.duanlian.viewpagerindicatordemo;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import java.util.List;/** * viewPager的adapter */public class PagerAdapter extends android.support.v4.view.PagerAdapter{  private List<ImageView> list;  public PagerAdapter(List<ImageView> list) {    this.list = list;  }  @Override  public int getCount() {    return list.size();  }  @Override  public boolean isViewFromObject(View view, Object object) {    return view==object;  }  @Override  public Object instantiateItem(ViewGroup container, int position) {    container.addView(list.get(position));//添加頁卡    return list.get(position);  }  @Override  public void destroyItem(ViewGroup container, int position, Object object) {    container.removeView(list.get(position));//刪除頁卡  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永胜县| 黔南| 盈江县| 朝阳县| 石林| 遂宁市| 德兴市| 固阳县| 平果县| 伊川县| 曲水县| 南汇区| 康平县| 宜昌市| 开阳县| 中牟县| 昭觉县| 哈巴河县| 涟源市| 治县。| 陈巴尔虎旗| 同江市| 孟连| 临颍县| 海门市| 恭城| 梓潼县| 赤水市| 临澧县| 游戏| 尚志市| 南岸区| 佛教| 津市市| 曲阜市| 邵阳市| 沿河| 合山市| 成安县| 毕节市| 长白|