Android之八滑屏的代码实现
通过引导页面,用户能够快捷了解用用的主要功能。当滑动到最后一个界面时,点击Go进入页面、
实现过程:
1.设计引导界面整体布局,修改自动生成的 activity_guide.xml 文件,在布局文件里首先加入
ViewPager这个组件。 然后加入四个ImageView组件,主要代码如下:
<span style="font-size:14px;"><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=".GuideActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/vpGuide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp" >
<ImageView
android:id="@+id/guide_dot1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_point_selected" />
<ImageView
android:id="@+id/guide_dot2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/bg_point" />
<ImageView
android:id="@+id/guide_dot3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/bg_point" />
<ImageView
android:id="@+id/guide_dot4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:background="@drawable/bg_point" />
</LinearLayout>
</span>
</RelativeLayout>
其中 bg_point_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="#427AB7" />
<size
android:height="8dp"
android:width="8dp" />
</shape>
bg_point.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="@android:color/black" />
<!--未被选中--!>
<size
android:height="8dp"
android:width="8dp" />
</shape>
2、定义好要切换的布局文件view1_of_pager.xml文件、view2_of_pager.xml文件、view3_of_pager.xml文件
view4_of_pager.xml文件
view1_of_pager.xml文件、view2_of_pager.xml文件、view3_of_pager.xml文件类似,只是图片背景不一样
<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_1"
android:orientation="vertical"
android:id="@+id/view1ofpager" >
</LinearLayout></span>
view4_of_pager.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/guide_1"
android:orientation="vertical" >
<TextView
android:id="@+id/tvGo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="19dp"
android:background="@drawable/start_select"
android:gravity="center"
android:text="Go"
android:textColor="#ffffff"
android:textSize="30sp" />
</RelativeLayout>
start_select.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/start_before" android:state_pressed="false"/>
<item android:drawable="@drawable/btn_shape_after" android:state_pressed="true"/>
</selector>
start_before.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval" >
<solid android:color="#F9F900" />
<size
android:height="80dp"
android:width="80dp" />
</shape>
3.编写GuideAdapter 类 extends PagerAdapter
package com.example.walkerlogin1;
import java.util.List;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
public class GuideAdapter extends PagerAdapter {
private List<View> views;
public GuideAdapter(List<View> views) {
this.views = views;
}
public int getCount()
{
return views.size();
}
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public Object instantiateItem(ViewGroup container, int position) {
container.addView(views.get(position));
return views.get(position); }
public void destroyItem(ViewGroup container, int position, Object object) {
View view = views.get(position);
container.removeView(view);
}
}
4.修改GuideActivity类
package com.example.walkerlogin1;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class GuideActivity extends Activity{
private List<View> guideViews;
private ViewPager vpGuide;
private int [] guid_dots={R.id.guide_dot1,R.id.guide_dot2,R.id.guide_dot3,
R.id.guide_dot4,};
private ImageView[] dots;
private TextView tvGo;
private GuideAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Toast.makeText(GuideActivity.this, "开始", Toast.LENGTH_LONG).show();
System.out.println("ni hao fdgffdg");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guide);
initGuideViews();
initDots();
setListeners();
}
private void initDots() {
dots=new ImageView[4];
for(int i=0;i<dots.length;i++)
{
dots[i]=(ImageView) findViewById(guid_dots[i]);
}
}
public void setListeners() {
vpGuide.setOnPageChangeListener(new OnPageChangeListener() {
public void onPageSelected(int position) {
for (int i = 0; i < guid_dots.length; i++) {
if (position == i) {
dots[i].setImageResource(R.drawable.bg_point_selected);
}
else {
dots[i].setImageResource(R.drawable.bg_point);
}
}
}
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageScrollStateChanged(int arg0) {
}
});
tvGo.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
Intent intent=new Intent(GuideActivity.this,MainActivity.class);
startActivity(intent);
}
});
}
private void initGuideViews() {
vpGuide=(ViewPager) findViewById(R.id.vpGuide);
// view
guideViews=new ArrayList<View>();
LayoutInflater layoutInflater=LayoutInflater.from(this);
guideViews.add(layoutInflater.inflate(R.layout.view1_of_pager, null));
guideViews.add(layoutInflater.inflate(R.layout.view2_of_pager, null));
guideViews.add(layoutInflater.inflate(R.layout.view3_of_pager, null));
//guideViews.add(layoutInflater.inflate(R.layout.view44_of_pager, null));
View view4=layoutInflater.inflate(R.layout.view44_of_pager, null);
guideViews.add(view4);
tvGo=(TextView) view4.findViewById(R.id.tvGo);
GuideAdapter guideAdapter=new GuideAdapter(guideViews);
vpGuide.setAdapter(guideAdapter);
}
}
测试界面如下
点击按钮GO,跳转