您的位置:首页 > 其它

viewpager引导页

2015-09-08 16:12 441 查看
项目结构:


3个activity:WelcomeActivity,GuideActivity,MainActivity。

3个对应的布局文件:layout_welcome,layout_guide,activity_main

3张引导图片:one,two,three

layout_welcome:

<?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:orientation="vertical" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/pic_welcome" />

</LinearLayout>


layout_guide:
<?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"
android:orientation="vertical" >

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</android.support.v4.view.ViewPager>

<LinearLayout
android:id="@+id/linearLayout"
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/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/moon_page_selected" />

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/moon_page_unselected" />

<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/moon_page_unselected" />
</LinearLayout>
<!-- 图片按钮点击进入mainactivity -->

<ImageView
android:id="@+id/iv_turn_to"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginBottom="80dp"
android:layout_alignParentBottom="true" />

</RelativeLayout>

activity_main:就一个按钮
WelcomeActivity:

package com.example.popwindow;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;

public class WelcomeActivity extends Activity {
// 判断用户是否是第一次使用该应用
private boolean isFirstUse = false;
// 延时时间,用于由欢迎界面进入另外的页面的延时效果
private static final int TIME = 2 * 1000;
private static final int TO_MAIN = 100001;
private static final int TO_GUIDE = 100002;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout_welcome);
init();
}
//由于不能在主线程中直接延时,所以用一个Handler来处理发送过来的消息
Handler mHandler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case TO_MAIN:
Intent i1 = new Intent(WelcomeActivity.this,MainActivity.class);
startActivity(i1);
finish();
break;

case TO_GUIDE:
Intent i2 = new Intent(WelcomeActivity.this,GuideActivity.class);
startActivity(i2);
finish();
break;
}
};
};
private void init() {
// TODO Auto-generated method stub
SharedPreferences preferences = getPreferences(MODE_PRIVATE);
isFirstUse = preferences.getBoolean("isFirstUse", true);
if(!isFirstUse){
mHandler.sendEmptyMessageDelayed(TO_MAIN, TIME);
}else{
mHandler.sendEmptyMessageDelayed(TO_GUIDE, TIME);
Editor editor = preferences.edit();
editor.putBoolean("isFirstUse", false);
editor.commit();
}
}
}


GuideActivity:
package com.example.popwindow;

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.PagerAdapter;
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.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

public class GuideActivity extends Activity {
private List<View> views;
private ViewPager viewPager;
private ImageView mImgBtn;
// 引导界面下面的小点,用于显示当前View是第几个
private ImageView[] dots;
private int[] ids = { R.id.imageView1, R.id.imageView2, R.id.imageView3 };

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.layout_guide);
initviews();
mImgBtn = (ImageView) findViewById(R.id.iv_turn_to);
viewPager = (ViewPager) findViewById(R.id.viewpager);
viewPager.setAdapter(mAdapter);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {

@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
for (int i = 0; i < ids.length; i++) {
// 若当前的界面是用户选中的界面,则点设置为选中状态,反之,则为没选中状态
if (arg0 == i) {
dots[i].setImageResource(R.drawable.moon_page_selected);
} else {
dots[i].setImageResource(R.drawable.moon_page_unselected);
}

}

/**
* 当最后一页时为跳转至LoginActivity
*/
if (arg0 == ids.length - 1) {

mImgBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

Intent it = new Intent(GuideActivity.this,
MainActivity.class);
GuideActivity.this.startActivity(it);
GuideActivity.this.finish();// 结束GuideActivity
}
});
}
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub

}

@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub

}
});

}

private void initviews() {
// TODO Auto-generated method stub
LayoutInflater inflater = getLayoutInflater();
View view1 = inflater.inflate(R.layout.one, null);
View view2 = inflater.inflate(R.layout.two, null);
View view3 = inflater.inflate(R.layout.three, null);
views = new ArrayList<View>();
views.add(view1);
views.add(view2);
views.add(view3);
dots = new ImageView[views.size()];
for (int i = 0; i < views.size(); i++) {
dots[i] = (ImageView) findViewById(ids[i]);
}

}

PagerAdapter mAdapter = new PagerAdapter() {

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
return views.size();
}

public Object instantiateItem(android.view.ViewGroup container,
int position) {
container.addView(views.get(position));
return views.get(position);
}

public void destroyItem(android.view.ViewGroup container, int position,
Object object) {
container.removeView(views.get(position));
}

};
}

实现一个PagerAdapter,要实现以下几种方法:

instantiateItem(ViewGroup, int)         //实例化
destroyItem(ViewGroup, int, Object)   //销毁
getCount()                                     //获取总数
isViewFromObject(View, Object)         //用于确认instantiateItem是否返回了和关键对象有关的Page视图


MainActivity: 这是一个popupwindow的练习

package com.example.popwindow;

import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.PopupWindow;

public class MainActivity extends Activity {
private Button mButton;
private PopupWindow mPopupWindow;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);

mButton = (Button) findViewById(R.id.bt_upload);
mButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
View contentView = getLayoutInflater().inflate(
R.layout.popwindowbg, null);
mPopupWindow = new PopupWindow(contentView,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
Button btnPhoto = (Button) contentView
.findViewById(R.id.bt_takep);// 拍照
Button btnImage = (Button) contentView
.findViewById(R.id.bt_chosep);// 图库
Button btnCancel = (Button) contentView
.findViewById(R.id.bt_cancel);// 取消

// 获得焦点,点击mPopupWindow以外的地方,窗体消失,contentView里的button要在最上面
mPopupWindow.setFocusable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
mPopupWindow.setOutsideTouchable(true);

mPopupWindow.showAtLocation(contentView, Gravity.BOTTOM
| Gravity.CENTER_VERTICAL, 0, 0);
// mPopupWindow.showAsDropDown(v);
btnCancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mPopupWindow.dismiss();
}
});
}
});

}

}
顺便给出popupwindow的布局:
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.popwindow.MainActivity" >

<Button
android:id="@+id/bt_takep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/bt_seletor"
android:text="拍照"
android:textColor="#0066FF" />

<Button
android:id="@+id/bt_chosep"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/bt_takep"
android:background="@drawable/bt_seletor"
android:text="相册"
android:textColor="#0066FF" />

<Button
android:id="@+id/bt_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/bt_chosep"
android:layout_below="@+id/bt_chosep"
android:layout_marginTop="24dp"
android:background="@drawable/bt_seletor"
android:text="取消"
android:textColor="#0066FF" />

</RelativeLayout>

button的背景
bt_bg_nor:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:topLeftRadius="5dp"
android:topRightRadius="5dp"
/>
<solid android:color="#EAEAEA"/>
<stroke
android:width="2dp"
android:color="#CCCCCC"
/>
</shape>
bt_bg_press:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<corners
android:topLeftRadius="5dp"
android:topRightRadius="5dp"
/>
<solid android:color="#CCCCCC"/>
<stroke
android:width="2dp"
android:color="#CCCCCC"
/>
</shape>


还有一个选择器 bt_selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="false" android:drawable="@drawable/bt_bg_nor"></item>
<item android:state_pressed="true" android:drawable="@drawable/bt_bg_press"></item>
</selector>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: