第一步
xml中
<android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:id="@+id/vp" ></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="54dp" android:id="@+id/liner" android:orientation="horizontal" android:gravity="center" ></LinearLayout> <Button android:id="@+id/button" android:layout_width="match_parent" android:layout_height="54dp" android:text="点击喔有惊喜呦" android:layout_gravity="bottom" />
第二步
MainActivity中
package com.example.day18_test; import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import java.util.ArrayList; public class MainActivity extends AppCompatActivity implements View.OnClickListener { private ViewPager vp; private LinearLayout liner; private Button button; private int[]arr = {R.mipmap.a,R.mipmap.a,R.mipmap.a}; private ArrayList<ImageView> initdata; private ArrayList<ImageView> listdata; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initAdapter(); initListerner(); } private void initListerner() { vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < 3; i++) { if(position==i){ listdata.get(i).setImageResource(R.drawable.shapeselect); }else{ listdata.get(i).setImageResource(R.drawable.shapenorth); } if(position==initdata.size()-1){ liner.setVisibility(View.GONE); button.setVisibility(View.VISIBLE); }else{ liner.setVisibility(View.VISIBLE); button.setVisibility(View.GONE); } } } @Override public void onPageScrollStateChanged(int state) { } }); } private void initAdapter() { Adapter adapter = new Adapter(initdata); vp.setAdapter(adapter); vp.setCurrentItem(0); } private void initData() { initdata = new ArrayList<>(); for (int i = 0; i < 3; i++) { ImageView image = new ImageView(this); image.setImageResource(arr[i]); image.setScaleType(ImageView.ScaleType.CENTER_CROP); initdata.add(image); } listdata = new ArrayList<>(); for (int i = 0; i < 3; i++) { ImageView imageView = new ImageView(this); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.leftMargin = 10; layoutParams.rightMargin = 10; layoutParams.height = 18; layoutParams.width = 18; if(i==0){ imageView.setImageResource(R.drawable.shapeselect); }else { imageView.setImageResource(R.drawable.shapenorth); } liner.addView(imageView,layoutParams); listdata.add(imageView); } } private void initView() { vp = (ViewPager) findViewById(R.id.vp); liner = (LinearLayout) findViewById(R.id.liner); button = (Button) findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: Intent intent = new Intent(MainActivity.this, HomeActivity.class); startActivity(intent); break; } } }
第三步
在drwable中
(1)在 shape_north中
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="#ffff00" ></solid> <corners android:radius="10dp" ></corners> </shape>
(2)在 shape_selected中
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > <solid android:color="#ff00ff" ></solid> <corners android:radius="10dp" ></corners> </shape>
第四部
在Adapter里面
public class Adapter extends PagerAdapter { private ArrayList<ImageView> initdata; public Adapter(ArrayList<ImageView> initdata) { this.initdata = initdata; } @Override public int getCount() { return initdata.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(initdata.get(position)); return initdata.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { //super.destroyItem(container, position, object); container.removeView(initdata.get(position)); }