baopbird2005 发表于 2015-09-21 13:48

【转】Android之应用首次使用的欢迎界面实例

主要代码package com.chinaideal.bkclient.tabmain;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;

public class WelComeActivity extends Activity {

        // 首次使用程序的显示的欢迎图片
        private int[] ids = { R.drawable.webcom_frist_image,
                        R.drawable.webcom_two_image, R.drawable.webcom_three_image,
                        R.drawable.niwodai_welcom };

        SharedPreferences share;
        private List<View> guides = new ArrayList<View>();
        private ViewPager pager;
        private ImageView curDot;
        // 位移量
        private int offset;
        // 记录当前的位置
        private int curPos = 0;

        Editor editor;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                share = getSharedPreferences("showWelcomm", Context.MODE_PRIVATE);
                editor = share.edit();
                // 判断是否首次登录程序
                if (share.contains("shownum")) {
                        setContentView(R.layout.welcomniwo);
                        int num = share.getInt("shownum", 0);
                        editor.putInt("shownum", num++);
                        editor.commit();
                        skipActivity(1);
                } else {
                        editor.putInt("shownum", 1);
                        editor.commit();
                        setContentView(R.layout.welcometabx);
                        initView();
                }

        }

        private void initView() {
                for (int i = 0; i < ids.length; i++) {
                        ImageView iv = new ImageView(this);
                        iv.setImageResource(ids);
                        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
                                        ViewGroup.LayoutParams.MATCH_PARENT,
                                        ViewGroup.LayoutParams.MATCH_PARENT);
                        iv.setLayoutParams(params);
                        iv.setScaleType(ScaleType.FIT_XY);
                        guides.add(iv);
                }
                curDot = (ImageView) findViewById(R.id.cur_dot);
                curDot.getViewTreeObserver().addOnPreDrawListener(
                                new OnPreDrawListener() {
                                        public boolean onPreDraw() {
                                                offset = curDot.getWidth();
                                                return true;
                                        }
                                });

                WecommPagerAdapter adapter = new WecommPagerAdapter(guides);
                pager = (ViewPager) findViewById(R.id.showwelom_page);
                pager.setAdapter(adapter);
                pager.setOnPageChangeListener(new OnPageChangeListener() {
                        public void onPageSelected(int arg0) {
                                moveCursorTo(arg0);
                                if (arg0 == ids.length - 1) {// 到最后一张了
                                        skipActivity(2);
                                }
                                curPos = arg0;
                        }

                        public void onPageScrolled(int arg0, float arg1, int arg2) {
                        }

                        public void onPageScrollStateChanged(int arg0) {
                        }

                });

        }

        /**
       * 移动指针到相邻的位置
       *
       * @param position
       *            指针的索引值
       * */
        private void moveCursorTo(int position) {
                TranslateAnimation anim = new TranslateAnimation(offset * curPos,
                                offset * position, 0, 0);
                anim.setDuration(300);
                anim.setFillAfter(true);
                curDot.startAnimation(anim);
        }


        /**
       * 延迟多少秒进入主界面
       * @param min 秒
       */
        private void skipActivity(int min) {
                new Handler().postDelayed(new Runnable() {

                        @Override
                        public void run() {
                                Intent intent = new Intent(WelComeActivity.this,
                                                TabHostMain.class);
                                startActivity(intent);
                                WelComeActivity.this.finish();
                        }
                }, 1000*min);
        }

}
public class WecommPagerAdapter extends PagerAdapter{

        private List<View> views;
       
        public GuidePagerAdapter(List<View> views){
                this.views=views;
        }
       
        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
                ((ViewPager) arg0).removeView(views.get(arg1));
        }

        @Override
        public void finishUpdate(View arg0) {
        }

        @Override
        public int getCount() {
                return views.size();
        }

        @Override
        public Object instantiateItem(View arg0, int arg1) {
                ((ViewPager) arg0).addView(views.get(arg1), 0);
                return views.get(arg1);
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == (arg1);
        }

        @Override
        public void restoreState(Parcelable arg0, ClassLoader arg1) {
               
        }

        @Override
        public Parcelable saveState() {
                return null;
        }

        @Override
        public void startUpdate(View arg0) {
               
        }

}布局文件<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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/showwelom_page"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_gravity="center"
      android:flipInterval="30"
      android:persistentDrawingCache="animation" />

    <FrameLayout
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:gravity="center"
      android:paddingBottom="22.0dip">

      <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal" >

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:src="@drawable/dot1_w" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:src="@drawable/dot1_w" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:src="@drawable/dot1_w" />

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:src="@drawable/dot1_w" />


      </LinearLayout>

      <ImageView
            android:id="@+id/cur_dot"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/dot2_w" />
    </FrameLayout>


</RelativeLayout>

baopbird2005 发表于 2015-09-21 13:52

也可以自己定义 fragment
例如

主要代码片段private void initView() {
                boolean isShow = false;
      for (int i = 0; i < ids.length; i++) {
              if (i == ids.length - 1) {
                                isShow = true;
                        }else {
                                isShow = false;
                        }
              GuideFragment guideFragment = new GuideFragment(ids,isShow);
            guides.add(guideFragment);
      }
      viewPager = (ViewPager) findViewById(R.id.pagerGuide);
      viewPager.setAdapter(new WelcomePagerAdapter(getSupportFragmentManager(),guides));
    }GuideFragment 类代码片段public class GuideFragment extends Fragment {
       
//        private static final String TAG = "GuideFragment";
        private Button startBtn;
        private int guideId;
        private boolean isShow;
       
        public GuideFragment(int guideId,boolean isShow){
               this.guideId = guideId;
               this.isShow = isShow;
        }
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        }
       
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
                View guideView = (View) inflater.inflate(R.layout.fragment_guide, container, false);
                startBtn = (Button) guideView.findViewById(R.id.start_btn);
                final ImageView guideImage = (ImageView)guideView.findViewById(R.id.image_guide);
                guideImage.setImageResource(guideId);
                guideImage.setBackgroundColor(Color.parseColor("#f4f8fb"));
                if (isShow) {
                        startBtn.setVisibility(View.VISIBLE);
                        startBtn.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                        CommonUtil.saveSharedPrefrences(AppConst.SAVE_WELCOME, 1 + "");
                                        guideImage.setImageResource(R.drawable.splash_default);
                                        guideImage.setBackgroundColor(Color.parseColor("#fbf9ef"));
                                       
                                        //最好一页点击的时候打开主activity界面
                                }
                        });
                }else {
                        startBtn.setVisibility(View.GONE);
                }
                return guideView;
        }fragment_guide<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" >

    <ImageView
      android:id="@+id/image_guide"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_centerInParent="true"
      android:background="@drawable/splash_default"
      android:contentDescription="@null"
      android:scaleType="centerInside" />

    <Button
      android:id="@+id/start_btn"
      style="@style/Button.Orange"
      android:layout_width="fill_parent"
      android:layout_height="200dip"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:layout_marginBottom="5dip"
      android:layout_marginLeft="40dip"
      android:layout_marginRight="40dip"
      android:background="#00ffffff" />

</RelativeLayout>
页: [1]
查看完整版本: 【转】Android之应用首次使用的欢迎界面实例