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

首頁 > 學院 > 開發(fā)設計 > 正文

動態(tài)給ViewPager添加Indicator導航

2019-11-08 00:29:19
字體:
供稿:網(wǎng)友

先看下效果這里寫圖片描述

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

首先第一步,滑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/color未選中的

<?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切換的監(jiān)聽事件 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { position = position % mList.size();// 需要對position的值進行重新賦值,否則會造成數(shù)組越界 // 更新小圓點的顯示 for (int i = 0; i < mList.size(); i++) { ImageView iv = (ImageView) mLinear.getChildAt(i); // 當前滑到的是那一頁就讓第幾個小圓點處于選中狀態(tà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));//刪除頁卡 }}

下載地址都在我上傳的資源里面點擊查看下載的資源


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 福鼎市| 甘谷县| 青河县| 健康| 安达市| 江油市| 望奎县| 吕梁市| 衡水市| 安丘市| 博客| 陕西省| 宣恩县| 古蔺县| 太原市| 凤山县| 舟曲县| 长兴县| 马尔康县| 虹口区| 岳池县| 甘泉县| 钦州市| 义乌市| 三明市| 沂水县| 江永县| 浦县| 永嘉县| 平泉县| 乐山市| 遵义县| 常山县| 九龙县| 丹江口市| 轮台县| 甘谷县| 象州县| 舞钢市| 万安县| 泰宁县|