zoukankan      html  css  js  c++  java
  • 十八、Android引导界面

    一、所需素材

          很有必要整理一下,里面附带友盟的社会化分享组件,我就不去掉了。

    butten_pressedbutten_unpress

    dark_dotguide1guide2guide3guide4logoweather_bg

    二、代码

    
    
    import com.umeng.update.UmengUpdateAgent;
    
    
    
    import android.app.Activity;
    
    import android.content.Intent;
    
    import android.content.SharedPreferences;
    
    import android.os.Bundle;
    
    import android.os.Handler;
    
    import android.os.Message;
    
    
    
    public class SplashActivity extends Activity {
    
    	
    
    	private final int SPLASH_DISPLAY_LENGHT = 3000; // 延迟3秒  
    
    	boolean isFirstIn = false;
    
        private static final int GO_HOME = 1000;
    
        private static final int GO_GUIDE = 1001;
    
        private static final String SHAREDPREFERENCES_NAME = "first_pref"; 
    
        
    
        @Override  
    
        protected void onCreate(Bundle savedInstanceState) {  
    
            super.onCreate(savedInstanceState);  
    
            setContentView(R.layout.activity_splash);  
    
            UmengUpdateAgent.update(this);
    
            init(); 
    
      
    
        }
    
        
    
        private Handler mHandler = new Handler() {
    
    
    
            @Override
    
            public void handleMessage(Message msg) {
    
                switch (msg.what) {
    
                case GO_HOME:
    
                    goHome();
    
                    break;
    
                case GO_GUIDE:
    
                    goGuide();
    
                    break;
    
                }
    
                super.handleMessage(msg);
    
            }
    
        };
    
        
    
        private void init() {
    
            // 读取SharedPreferences中需要的数据
    
            // 使用SharedPreferences来记录程序的使用次数
    
            SharedPreferences preferences = getSharedPreferences(
    
                    SHAREDPREFERENCES_NAME, MODE_PRIVATE);
    
    
    
            // 取得相应的值,如果没有该值,说明还未写入,用true作为默认值
    
            isFirstIn = preferences.getBoolean("isFirstIn", true);
    
    
    
            // 判断程序与第几次运行,如果是第一次运行则跳转到引导界面,否则跳转到主界面
    
            if (!isFirstIn) {
    
                // 使用Handler的postDelayed方法,3秒后执行跳转到MainActivity
    
                mHandler.sendEmptyMessageDelayed(GO_HOME, SPLASH_DISPLAY_LENGHT);
    
            } else {
    
                mHandler.sendEmptyMessageDelayed(GO_GUIDE, SPLASH_DISPLAY_LENGHT);
    
               // preferences.edit().putBoolean("isFirstIn",false).commit();
    
            }
    
    
    
        }
    
        
    
        private void goGuide() {
    
            Intent intent = new Intent(SplashActivity.this, GuideActivity.class);
    
            SplashActivity.this.startActivity(intent);
    
            SplashActivity.this.finish();
    
        }
    
        private void goHome() {
    
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
    
            SplashActivity.this.startActivity(intent);
    
            SplashActivity.this.finish();
    
        }
    
    
    
    }
    

    <?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/weather_bg"
    
        android:orientation="vertical" >
    
        
    
    
    
    </LinearLayout>
    

    import java.util.ArrayList;
    
    import java.util.List;
    
    
    
    import android.app.Activity;
    
    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.widget.ImageView;
    
    import android.widget.LinearLayout;
    
    
    
    public class GuideActivity extends Activity implements OnPageChangeListener {
    
    
    
        private ViewPager vp;
    
        private ViewPagerAdapter vpAdapter;
    
        private List<View> views;
    
    
    
        // 底部小点图片
    
        private ImageView[] dots;
    
    
    
        // 记录当前选中位置
    
        private int currentIndex;
    
    
    
        @Override
    
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.guide);
    
    
    
            // 初始化页面
    
            initViews();
    
    
    
            // 初始化底部小点
    
            initDots();
    
        }
    
    
    
        private void initViews() {
    
        	/*
    
        	 * LayoutInflater inflater = getLayoutInflater();  //调用Activity的getLayoutInflater() 
    
        	 * LayoutInflater localinflater =  (LayoutInflater)context.getSystemService  
    
      
    
                                                     (Context.LAYOUT_INFLATER_SERVICE);  //最快
    
        	 */
    
            LayoutInflater inflater = LayoutInflater.from(this);
    
    
    
            views = new ArrayList<View>();
    
            // 初始化引导图片列表
    
            views.add(inflater.inflate(R.layout.what_new_one, null));
    
            views.add(inflater.inflate(R.layout.what_new_two, null));
    
            views.add(inflater.inflate(R.layout.what_new_three, null));
    
            views.add(inflater.inflate(R.layout.what_new_four, null));
    
    
    
            // 初始化Adapter
    
            vpAdapter = new ViewPagerAdapter(views, this);
    
    
    
            vp = (ViewPager) findViewById(R.id.viewpager);
    
            vp.setAdapter(vpAdapter);
    
            // 绑定回调
    
            vp.setOnPageChangeListener(this);
    
        }
    
    
    
        private void initDots() {
    
            LinearLayout ll = (LinearLayout) findViewById(R.id.ll);
    
    
    
            dots = new ImageView[views.size()];
    
    
    
            // 循环取得小点图片
    
            for (int i = 0; i < views.size(); i++) {
    
                dots[i] = (ImageView) ll.getChildAt(i);
    
                dots[i].setEnabled(true);// 都设为灰色
    
            }
    
    
    
            currentIndex = 0;
    
            dots[currentIndex].setEnabled(false);// 设置为白色,即选中状态
    
        }
    
    
    
        private void setCurrentDot(int position) {
    
            if (position < 0 || position > views.size() - 1
    
                    || currentIndex == position) {
    
                return;
    
            }
    
    
    
            dots[position].setEnabled(false);
    
            dots[currentIndex].setEnabled(true);
    
    
    
            currentIndex = position;
    
        }
    
    
    
        // 当滑动状态改变时调用
    
        @Override
    
        public void onPageScrollStateChanged(int arg0) {
    
        }
    
    
    
        // 当当前页面被滑动时调用
    
        @Override
    
        public void onPageScrolled(int arg0, float arg1, int arg2) {
    
        }
    
    
    
        // 当新的页面被选中时调用
    
        @Override
    
        public void onPageSelected(int arg0) {
    
            // 设置底部小点选中状态
    
            setCurrentDot(arg0);
    
        }
    
    
    
    }

    <?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" />
    
    
    
        <LinearLayout
    
            android:id="@+id/ll"
    
            android:layout_width="wrap_content"
    
            android:layout_height="wrap_content"
    
            android:layout_alignParentBottom="true"
    
            android:layout_centerHorizontal="true"
    
            android:layout_marginBottom="24.0dp"
    
            android:orientation="horizontal" >
    
    
    
            <ImageView
    
                android:layout_width="wrap_content"
    
                android:layout_height="wrap_content"
    
                android:layout_gravity="center_vertical"
    
                android:clickable="true"
    
                android:padding="15.0dip"
    
                android:src="@drawable/dot" />
    
    
    
            <ImageView
    
                android:layout_width="wrap_content"
    
                android:layout_height="wrap_content"
    
                android:layout_gravity="center_vertical"
    
                android:clickable="true"
    
                android:padding="15.0dip"
    
                android:src="@drawable/dot" />
    
    
    
            <ImageView
    
                android:layout_width="wrap_content"
    
                android:layout_height="wrap_content"
    
                android:layout_gravity="center_vertical"
    
                android:clickable="true"
    
                android:padding="15.0dip"
    
                android:src="@drawable/dot" />
    
    
    
            <ImageView
    
                android:layout_width="wrap_content"
    
                android:layout_height="wrap_content"
    
                android:layout_gravity="center_vertical"
    
                android:clickable="true"
    
                android:padding="15.0dip"
    
                android:src="@drawable/dot" />
    
        </LinearLayout>
    
    
    
    </RelativeLayout>

    <?xml version="1.0" encoding="UTF-8"?>
    
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
    
    
        <item android:drawable="@drawable/dark_dot" android:state_enabled="true"/>
    
        <item android:drawable="@drawable/white_dot" android:state_enabled="false"/>
    
    
    
    </selector>

    一二三一样,第四个多一个开始按钮,下面只列举第一第四个

    <?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" >
    
    
    
        <ImageView
    
            android:layout_width="match_parent"
    
            android:layout_height="match_parent"
    
            android:layout_centerInParent="true"
    
            android:adjustViewBounds="false"
    
            android:focusable="true"
    
            android:scaleType="centerCrop"
    
            android:background="@drawable/guide1" />
    
    
    
    </RelativeLayout>

    <?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" >
    
    
    
        <ImageView
    
            android:layout_width="match_parent"
    
            android:layout_height="match_parent"
    
            android:layout_centerInParent="true"
    
            android:adjustViewBounds="false"
    
            android:background="@drawable/guide4"
    
            android:focusable="true"
    
            android:scaleType="centerCrop" />
    
    
    
        <ImageView
    
            android:id="@+id/iv_start"
    
            android:layout_width="wrap_content"
    
            android:layout_height="wrap_content"
    
            android:layout_alignParentBottom="true"
    
            android:layout_centerHorizontal="true"
    
            android:layout_marginBottom="108dp"
    
            android:background="@drawable/whats_new_start_btn"
    
            android:focusable="true" />
    
    
    
    </RelativeLayout>

    package com.example.helloworld;
    
    
    
    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.Parcelable;
    
    import android.support.v4.view.PagerAdapter;
    
    import android.support.v4.view.ViewPager;
    
    import android.view.View;
    
    import android.view.View.OnClickListener;
    
    import android.widget.ImageView;
    
    
    
    public class ViewPagerAdapter extends PagerAdapter {
    
    
    
        // 界面列表
    
        private List<View> views;
    
        private Activity activity;
    
    
    
        private static final String SHAREDPREFERENCES_NAME = "first_pref";
    
    
    
        public ViewPagerAdapter(List<View> views, Activity activity) {
    
            this.views = views;
    
            this.activity = activity;
    
        }
    
    
    
        // 销毁arg1位置的界面
    
        @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() {
    
            if (views != null) {
    
                return views.size();
    
            }
    
            return 0;
    
        }
    
    
    
        // 初始化arg1位置的界面
    
        @Override
    
        public Object instantiateItem(View arg0, int arg1) {
    
            ((ViewPager) arg0).addView(views.get(arg1), 0);
    
            if (arg1 == views.size() - 1) {
    
                ImageView mStartWeiboImageButton = (ImageView) arg0
    
                        .findViewById(R.id.iv_start);
    
                mStartWeiboImageButton.setOnClickListener(new OnClickListener() {
    
    
    
                    @Override
    
                    public void onClick(View v) {
    
                        // 设置已经引导
    
                        setGuided();
    
                        goHome();
    
    
    
                    }
    
    
    
                });
    
            }
    
            return views.get(arg1);
    
        }
    
    
    
        private void goHome() {
    
            // 跳转
    
            Intent intent = new Intent(activity, MainActivity.class);
    
            activity.startActivity(intent);
    
            activity.finish();
    
        }
    
    
    
        /**
    
         * 
    
         * method desc:设置已经引导过了,下次启动不用再次引导
    
         */
    
        private void setGuided() {
    
            SharedPreferences preferences = activity.getSharedPreferences(
    
                    SHAREDPREFERENCES_NAME, Context.MODE_PRIVATE);
    
            Editor editor = preferences.edit();
    
            // 存入数据
    
            editor.putBoolean("isFirstIn", false);
    
            // 提交修改
    
            editor.commit();
    
        }
    
    
    
        // 判断是否由对象生成界面
    
        @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"?>
    
    <selector
    
      xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_pressed="true" android:drawable="@drawable/butten_pressed" />
    
        <item android:drawable="@drawable/butten_unpress" />
    
    </selector>
  • 相关阅读:
    xml模块
    json&pickle&shelve
    C#基础-关于用json给控制台程序传值的坑
    【MediaElement】WPF视频播放器【3】
    【Treeview】遍历本地磁盘
    【WCF】WCF中的InstanceContext与ConcurrencyMode【转】
    C#基础-FileStream实现多线程断点续传
    C#基础-FileStream
    C#基础-out与ref字段
    【Visual Installer】如何提醒用户卸载旧版本软件
  • 原文地址:https://www.cnblogs.com/liyuzhao/p/3783654.html
Copyright © 2011-2022 走看看