自定义欢迎页张数,带应到点。多的不说了,直接上代码。
效果大家可以自己试一下,
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
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.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.facebook.drawee.view.SimpleDraweeView;
/**
* @项目名称: Make_wish
* @类名称: Welcome_Activity.java
* @创建人: Mr.ladeng (zbl704@yeah.net)
* @创建时间: 2015-5-11下午8:09:42
* @修改备注:
* @version 1.0
* @类描述:引导欢迎页面,首次安装会进入这个界面
*/
public class Welcome_Activity extends BaseActivity {
private TextView wel_jump;
private ImageView tv;
private ViewPager vp;// 页卡内容
private List<ImageView> datas; // Tab页面列表
private LinearLayout ll_points;
//ArrayList<ImagePage> imageP ;
private static final String SHAREDPREFERENCES_NAME = "first_pref";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PushAgent.getInstance(this).onAppStart();
// 设置全屏
requestWindowFeature(Window.FEATURE_NO_TITLE); // 无title
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // 全屏
setContentView(R.layout.welcome_activity);
(new GetWelcomeImg()).execute();
//Bundle bundle=getIntent().getExtras();
//imageP =bundle.getParcelableArrayList("img");
// 初始化
initView();
}
private void initView() {
wel_jump = (TextView) findViewById(R.id.wel_jump);
tv = (ImageView) findViewById(R.id.wel_tv);
vp = (ViewPager) findViewById(R.id.vp);
ll_points = (LinearLayout) findViewById(R.id.ll_points);
initDatas(imageP);
vp.setOffscreenPageLimit(3);
vp.setAdapter(new MyPagerAdapter());
setListener();
}
/** 未选中 */
private int prePosition = 0;
@SuppressWarnings("deprecation")
private void setListener() {
/** 设置小圆点**/
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
ll_points.getChildAt(position).setBackgroundResource(R.drawable.wel_dot_enable);//选中背景色
ll_points.getChildAt(prePosition).setBackgroundResource(R.drawable.wel_normal);//未选中背景色
/** 选中 */
prePosition = position;
/**
* 设置tv可见 当position为第4个图片的时候激活下面的方法 其他时候都是不可见的
* 下面一个动画 ,在最后一个页面的时候可以通过动画跳转到主界面
*/
if (position == datas.size() - 1) {
wel_jump.setVisibility(View.VISIBLE);//跳过
}else {
wel_jump.setVisibility(View.GONE);//跳过
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
/**
* 设置点击跳转
*/
wel_jump.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
setGuided();
openActivity(LoginActivity.class);
finish();
}
});
tv.setOnClickListener(new OnClickListener() {
@Override
// 点击方法
public void onClick(View v) {
setGuided();
openActivity(LoginActivity.class);
finish();
}
});
}
/**
*
* method desc:设置已经引导过了,下次启动不用再次引导
*/
private void setGuided(){
SharedPreferences preferences = getSharedPreferences( SHAREDPREFERENCES_NAME, MODE_PRIVATE);
Editor editor = preferences.edit();
// 存入数据
editor.putBoolean("isFirstIn", false);
// 提交修改
editor.commit();
}
// 将图片添加到界面上
private void initDatas(ArrayList<ImagePage> imageP) {
datas = new ArrayList<ImageView>();
for (int i = 0; i < imageP.size() ; i++) {
SimpleDraweeView iv = new SimpleDraweeView(Welcome_Activity.this);
FrescoUtils.loadImageStart( iv , imageP.get(i).imgs);
datas.add(iv);
int px2dp = ScreenUtils.px2dp(getApplicationContext(), 30);
int screenWidth = ScreenUtils.getScreenWidth(getApplicationContext());
if (screenWidth>=1080) {
px2dp = 30 ;
}
View view = new View(this);
// 为这个view设置背景 未选中状态背景色
view.setBackgroundResource(R.drawable.wel_normal);
// 定义布局参数,并给view设置参数(宽,高)
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(px2dp , px2dp);
params.leftMargin = px2dp ;
view.setLayoutParams(params);
// 将定义好的view加入到线性布局中
ll_points.addView(view);
}
ll_points.getChildAt(0).setBackgroundResource(R.drawable.wel_dot_enable);//选中状态背景色
}
private class MyPagerAdapter extends PagerAdapter {
// viewPager的页数
@Override
public int getCount() {
return datas.size();
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}
// 初始化条目
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 必须要加入到ViewGroup中
container.addView(datas.get(position));
return datas.get(position);
}
// 从ViewPager中移除
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(datas.get(position));
}
}
/********* 欢迎页 start******** */
class GetWelcomeImg extends AsyncTask<Void, Integer, Integer> {
private String flag;
ArrayList<ImagePage> imageP ;
GetWelcomeImg() {
imageP = new ArrayList<ImagePage> ();
}
@Override
protected void onPreExecute() {
}
@Override
protected Integer doInBackground(Void... params) {
JSONObject jsonObject = JsonUtils.ReadHttpGet(Constant.WelcomeImg);
Integer result = 0;
if (null != jsonObject) {
try {
flag = jsonObject.getString("flag").toString().trim();
if (flag.equals("1")) {
JSONArray jsonArray = new JSONArray(jsonObject.getString("data"));
ImagePage imagePage ;
for (int i = 0; i < jsonArray.length(); i++) {
imagePage = new ImagePage();
JSONObject temp = (JSONObject) jsonArray.get(i);
imagePage.imgs = temp.getString("pic");
imageP.add(imagePage);
}
result = 1;
}else {
result = 0;
}
} catch (JSONException e) {
e.printStackTrace();
result = 0;
}
}
return result;
}
@Override
protected void onPostExecute(Integer result) {
// over do somethhing
if (1 == result) {
initDatas(imageP);
vp.setOffscreenPageLimit(3);
vp.setAdapter(new MyPagerAdapter());
setListener();
}else {
openActivity(LoginActivity.class);
finish();
}
super.onPostExecute(result);
}
@Override
protected void onProgressUpdate(Integer... values) {
}
}
class ImagePage {
public String imgs ;
}
/** 异步任务 end ******** */
/****************** 欢迎页##### *********************/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
}
布局代码
<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=".Welcome_Activity" >
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- alpha 是透明度(范围0-1),,visibility设置是否可见(gone为不可见,visible可见) -->
<LinearLayout
android:id="@+id/ll_points"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/vp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"
android:gravity="center"
android:orientation="horizontal" />
<ImageView
android:id="@+id/wel_tv"
android:layout_width="100dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginTop="15dp"
android:layout_marginRight="10dp"
android:background="@drawable/jumpto"
android:gravity="center"
android:visibility="visible" />
<TextView
android:id="@+id/wel_jump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/ll_points"
android:layout_centerHorizontal="true"
android:layout_marginBottom="21dp"
android:background="@drawable/jump_tv"
android:gravity="center"
android:padding="10dp"
android:textColor="@color/white"
android:text="立即体验"
android:visibility="gone" />
</RelativeLayout>
需要图片资源