各方面的借鉴终于搞出来了。
1.项目目录
其中AppStartActivity.java是启动欢迎界面,ViewPaperActivity.java是滑动介绍界面,MainActivity.java是应用程序主界面
2.主要介绍ViewPaperActivity类的布局文件,另外两个类的布局文件自己定义。
activity_view_paper.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/whatsnew_viewpager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="30dp"
android:gravity="center_horizontal" >
<ImageView
android:id="@+id/page0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="matrix"
android:src="@drawable/page_now" />
<ImageView
android:id="@+id/page1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
<ImageView
android:id="@+id/page2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
<ImageView
android:id="@+id/page3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
<ImageView
android:id="@+id/page4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
<ImageView
android:id="@+id/page5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
<ImageView
android:id="@+id/page6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:scaleType="matrix"
android:src="@drawable/page" />
</LinearLayout>
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/whats_new_bg_01"
android:orientation="vertical" >
<TextView
style="@style/whats_new_title"
android:gravity="center"
android:text="@string/whats_new_msg1" />
</LinearLayout>
whats_news_gallery_seven.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/whats_new_seven_bg_ll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<View
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:background="@drawable/whatsnew_left" />
<View
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="1.0"
android:background="@drawable/whatsnew_right" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/whats_new_title1_tv"
style="@style/whats_new_title"
android:gravity="center"
android:paddingLeft="0.0dip"
android:text="@string/whats_new_title7_01" />
<TextView
android:id="@+id/whats_new_title2_tv"
style="@style/whats_new_title"
android:layout_marginTop="0.0dip"
android:gravity="center"
android:paddingLeft="0.0dip"
android:text="@string/whats_new_title7_02" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0"
android:gravity="center_horizontal"
android:paddingTop="60.0dip" >
<Button
android:id="@+id/whats_new_start_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/whats_new_start_btn"
android:duplicateParentState="false"
android:paddingLeft="30.0dip"
android:paddingRight="30.0dip"
android:text="开始"
android:gravity="center_vertical"
android:textColor="#ffffffff"
android:textSize="@dimen/Small_TextSize" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
3.java代码
AppStartActivity.java
package com.dragonldg.viewpager;
import com.dragonldg.viewpager.R;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
public class AppStartActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏,注意一定要在绘制view之前调用这个方法,不然会出现
// AndroidRuntimeException: requestFeature() must be called before
// adding content 这个错误。
setContentView(R.layout.activity_app_start);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); // 全屏显示
new Handler().postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(AppStartActivity.this,
ViewPaperActivity.class);
startActivity(intent);
AppStartActivity.this.finish();// 结束本Activity
}
}, 1000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.test, menu);
return true;
}
}
ViewPaperActivity.java
package com.dragonldg.viewpager;
import java.util.ArrayList;
import com.dragonldg.viewpager.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class ViewPaperActivity extends Activity {
// 翻页控件
private ViewPager mViewPager;
// 这5个是底部显示当前状态点imageView
private ImageView mPage0;
private ImageView mPage1;
private ImageView mPage2;
private ImageView mPage3;
private ImageView mPage4;
private ImageView mPage5;
private ImageView mPage6;
private Button whats_new_start_btn;
@Override
public void onCreate(Bundle savedInstanceState) {
// 去掉标题栏全屏显示
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_paper);
mViewPager = (ViewPager) findViewById(R.id.whatsnew_viewpager);
mViewPager.setOnPageChangeListener(new MyOnPageChangeListener());
mPage0 = (ImageView) findViewById(R.id.page0);
mPage1 = (ImageView) findViewById(R.id.page1);
mPage2 = (ImageView) findViewById(R.id.page2);
mPage3 = (ImageView) findViewById(R.id.page3);
mPage4 = (ImageView) findViewById(R.id.page4);
mPage5 = (ImageView) findViewById(R.id.page5);
mPage6 = (ImageView) findViewById(R.id.page6);
/*
* 这里是每一页要显示的布局,根据应用需要和特点自由设计显示的内容 以及需要显示多少页等
*/
LayoutInflater mLi = LayoutInflater.from(this);
View view1 = mLi.inflate(R.layout.whats_news_gallery_one, null);
View view2 = mLi.inflate(R.layout.whats_news_gallery_two, null);
View view3 = mLi.inflate(R.layout.whats_news_gallery_three, null);
View view4 = mLi.inflate(R.layout.whats_news_gallery_four, null);
View view5 = mLi.inflate(R.layout.whats_news_gallery_five, null);
View view6 = mLi.inflate(R.layout.whats_news_gallery_six, null);
View view7 = mLi.inflate(R.layout.whats_news_gallery_seven, null);
whats_new_start_btn = (Button) view7
.findViewById(R.id.whats_new_start_btn);
whats_new_start_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(ViewPaperActivity.this,
MainActivity.class);
// 进入到主页面
startActivity(intent);
ViewPaperActivity.this.finish();// 结束本Activity
}
});
/*
* 这里将每一页显示的view存放到ArrayList集合中 可以在ViewPager适配器中顺序调用展示
*/
final ArrayList<View> views = new ArrayList<View>();
views.add(view1);
views.add(view2);
views.add(view3);
views.add(view4);
views.add(view5);
views.add(view6);
views.add(view7);
/*
* 每个页面的Title数据存放到ArrayList集合中 可以在ViewPager适配器中调用展示
*/
final ArrayList<String> titles = new ArrayList<String>();
titles.add("tab1");
titles.add("tab2");
titles.add("tab3");
titles.add("tab4");
titles.add("tab5");
titles.add("tab6");
titles.add("tab7");
// 填充ViewPager的数据适配器
MyPagerAdapter mPagerAdapter = new MyPagerAdapter(views, titles);
mViewPager.setAdapter(mPagerAdapter);
// new Handler().postDelayed(new Runnable() {
// public void run() {
// Intent intent = new Intent(ViewPaperActivity.this,
// MainActivity.class);
// // 进入到主页面
// startActivity(intent);
// ViewPaperActivity.this.finish();// 结束本Activity
// }
// }, 1500);
}
public class MyOnPageChangeListener implements OnPageChangeListener {
public void onPageSelected(int page) {
Animation animation = null;// 声明动画对象
// 翻页时当前page,改变当前状态园点图片
switch (page) {
case 0:
mPage0.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage1.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 1:
mPage1.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage0.setImageDrawable(getResources().getDrawable(
R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 2:
mPage2.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage1.setImageDrawable(getResources().getDrawable(
R.drawable.page));
mPage3.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 3:
mPage3.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage4.setImageDrawable(getResources().getDrawable(
R.drawable.page));
mPage2.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 4:
mPage4.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage3.setImageDrawable(getResources().getDrawable(
R.drawable.page));
mPage5.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 5:
mPage5.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage4.setImageDrawable(getResources().getDrawable(
R.drawable.page));
mPage6.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
case 6:
mPage6.setImageDrawable(getResources().getDrawable(
R.drawable.page_now));
mPage5.setImageDrawable(getResources().getDrawable(
R.drawable.page));
break;
}
}
// public void startbutton(View v) {
// Intent intent = new Intent();
// intent.setClass(ViewPaperActivity.this, AppStartActivity.class);//
// 进入到开门效果的Activity
// startActivity(intent);
// ViewPaperActivity.this.finish();// 结束本Activity
// }
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
public void onPageScrollStateChanged(int arg0) {
}
}
}
MyPaperAdapter.java
package com.dragonldg.viewpager;
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
public class MyPagerAdapter extends PagerAdapter{
private ArrayList<View> views;
private ArrayList<String> titles;
public MyPagerAdapter(ArrayList<View> views,ArrayList<String> titles){
this.views = views;
this.titles = titles;
}
@Override
public int getCount() {
return this.views.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
public void destroyItem(View container, int position, Object object) {
((ViewPager)container).removeView(views.get(position));
}
//页面view
public Object instantiateItem(View container, int position) {
((ViewPager)container).addView(views.get(position));
return views.get(position);
}
}
MainActivity.java自己定义吧
4运行就OK了,结果图片
上图为启动欢迎界面,只包含简单的文字
上图为滑动介绍界面的首页
上图为滑动介绍界面的最有一页,单击开始按钮跳转到MainActivity中,如下图