首先我们来看一下整个项目的结构是什么样子的:效果图如下:welcome界面:引导界面有三张图片,用手指滑动可以切换图片:主界面:这个程序的主要的功能是用来做一个引导的界面。并且可以判断用户是不是首次使用这个应用程序,如果是首次使用的话,那么就会出现引导界面。否则就不会出现引导界面。首先我们来看一下布局文件:content_main.xml<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="learnvp.lg.com.viewpagerdemo.MainActivity" tools:showIn="@layout/activity_main"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> </RelativeLayout>guide.xml:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <!--特别要注意的一点是如果你要使用PagerTabStrip的话,那么它必定是内嵌到viewPager中去的 也就是说,pagerTabStrip是viewPager的子控件--> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#00000000" > <android.support.v4.view.PagerTabStrip android:id="@+id/pagertab" android:layout_gravity="top" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:gravity="center_horizontal" android:orientation="horizontal" > <!--用于定义导航点--> <ImageView android:id="@+id/iv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/login_point_selected" /> <ImageView android:id="@+id/iv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/login_point" /> <ImageView android:id="@+id/iv3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/login_point" /> </LinearLayout> </RelativeLayout>one.xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/guide_1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>two.xml:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/guide_2" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
three.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:src="@drawable/guide_3" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:gravity="center_horizontal" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:text="进入" android:id="@+id/startButton" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </RelativeLayout>
自定义的MyViewPager的内容:import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import java.util.List; /*这是自定义的一个PagerAdapter的适配器*/ public class MyViewPagerAdapter extends PagerAdapter { /*要加载的views*/ private List<View> mListViews; // private List<String> mlistTitles; /*可以访问全局信息*/ private Context context; public MyViewPagerAdapter(List<View> mListViews,Context context){ this.mListViews=mListViews; this.context=context; // this.mlistTitles=mlistTitles; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(mListViews.get(position)); return mListViews.get(position); } /*如果这个view不再使用的话,那么就销毁这个view*/ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mListViews.get(position)); } @Override public int getCount() { return mListViews.size(); } /*api是这样提示的*/ @Override public boolean isViewFromObject(View view, Object object) { return view==object; } /* @Override public CharSequence getPageTitle(int position) { return mlistTitles.get(position); }*/ }MainActivity中的内容:public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }guide中的内容:
import android.content.Intent; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v4.view.PagerTabStrip; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.util.ArrayList; import java.util.List; public class guide extends AppCompatActivity implements View.OnFocusChangeListener, ViewPager.OnPageChangeListener { private Button startButton; private ViewPager viewPager; private PagerTabStrip pagerTabStrip; private View view1,view2,view3; private List<View> listViews; // private List<String> listTitles; private MyViewPagerAdapter adapter; private ImageView[] imags; private int[] pots ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_guide); initViews(); initImags(); setListener(); } /*初始化导航点*/ public void initImags() { for (int i = 0; i < listViews.size(); i++) { imags[i] = (ImageView) findViewById(pots[i]); } } public void initViews() { viewPager = (ViewPager) findViewById(R.id.viewpager); listViews = new ArrayList<>(); pagerTabStrip=(PagerTabStrip) findViewById(R.id.pagertab); pagerTabStrip.setTabIndicatorColor(ContextCompat.getColor(this, R.color.colorAccent)); pagerTabStrip.setDrawFullUnderline(false); pagerTabStrip.setBackgroundColor(ContextCompat.getColor(this,R.color.colorAccent)); pagerTabStrip.setTextSpacing(50); LayoutInflater inflater = LayoutInflater.from(this); view1 = inflater.inflate(R.layout.one, null); view2 = inflater.inflate(R.layout.two, null); view3 = inflater.inflate(R.layout.three, null); listViews.add(view1); listViews.add(view2); listViews.add(view3); imags = new ImageView[listViews.size()]; pots= new int[]{R.id.iv1, R.id.iv2, R.id.iv3}; adapter = new MyViewPagerAdapter(listViews, this); viewPager.setAdapter(adapter); /*由引导界面进入到主界面中*/ startButton= (Button) listViews.get(2).findViewById(R.id.startButton); startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(guide.this, MainActivity.class); startActivity(intent); finish(); } }); } /*为了使用导航点,需要注册监听器*/ public void setListener() { viewPager.setOnPageChangeListener(this); } @Override public void onFocusChange(View v, boolean hasFocus) { } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } /*这样的话,就可以出现明暗交替变化的情况。*/ @Override public void onPageSelected(int position) { for (int i = 0; i < pots.length; i++) { if (i== position) { imags[i].setImageResource(R.drawable.login_point_selected); }else { imags[i].setImageResource(R.drawable.login_point); } } } @Override public void onPageScrollStateChanged(int state) { } }Welcome中的内容:import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; /** * */ /*这是一个欢迎界面的Activity.*/ public class Welcome extends AppCompatActivity { /*等待的时间,也就是欢迎界面跳转到引导界面或者是主界面所需要的时间。在这段时间内,可以完成一些数据的加载*/ public static final int TIME=2000; /*定义俩个常量,用以判断是去主界面还是去引导界面*/ public static final int GO_HOME=1000; public static final int GO_GUIDE=1001; /*判断程序是不是第一次打开。如果是第一次打开的话,那么就由欢迎界面跳转到引导界面 * 否则就有欢迎界面跳转到主界面*/ private boolean isFirstIn=false; /*用来接收和发送消息,用于判断*/ Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case GO_HOME: goHome(); break; case GO_GUIDE: goGuide(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.we); isFirstIn(); } /*判断是不是第一次进入程序,用SharedPreferences来进行储存数据*/ private void isFirstIn() { SharedPreferences preferences = getSharedPreferences("liguo", MODE_PRIVATE); boolean isFirst= preferences.getBoolean("isFirstIn", true); SharedPreferences.Editor editor=preferences.edit(); editor.putBoolean("isFirstIn", isFirstIn); editor.commit(); if (!isFirst) { handler.sendEmptyMessageDelayed(GO_HOME, TIME); }else { handler.sendEmptyMessageDelayed(GO_GUIDE, TIME); isFirstIn=false; } } /*到主界面*/ private void goHome() { Intent intent = new Intent(Welcome.this, MainActivity.class); startActivity(intent); finish(); } /*到引导界面*/ private void goGuide() { Intent intent = new Intent(Welcome.this, guide.class); startActivity(intent); finish(); } }
Android中ViewPagr的使用:当APP第一次使用的时候,可以使用ViewPager来创建引导界面
最新推荐文章于 2023-11-27 11:59:36 发布