精华内容
下载资源
问答
  • 引导页面

    2017-08-24 09:42:22
    public class WelcomeActivity extends AppCompatActivity {  private int[] images={R.mipmap.bb,R.mipmap.cc,R.mipmap.dd}; ... protected void onCreate(Bundle savedInstanceState)
    public class WelcomeActivity extends AppCompatActivity {


        private int[] images={R.mipmap.bb,R.mipmap.cc,R.mipmap.dd};


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_welcome);


            ViewPager vp= (ViewPager) findViewById(R.id.vp);


            SharedPreferences sharedPreferences = getSharedPreferences("isFirst", MODE_PRIVATE);
            boolean isFirst = sharedPreferences.getBoolean("isFirst", false);
            if (isFirst){


                Intent intent1=new Intent(WelcomeActivity.this,MainActivity.class);
                startActivity(intent1);
                finish();
            }else{

                vp.setAdapter(new MyPagerAdapter());
            }

            vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {



                }


                @Override
                public void onPageSelected(int position) {


                    if (position==2){
                        Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);
                        startActivity(intent);
                        finish();
                    }
                }


                @Override
                public void onPageScrollStateChanged(int state) {


                }
            });


            SharedPreferences.Editor edit = sharedPreferences.edit();
            edit.putBoolean("isFirst",true);
            edit.commit();


        }
        class MyPagerAdapter extends PagerAdapter{


            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                ImageView iv = new ImageView(WelcomeActivity.this);
                iv.setImageResource(images[position]);
                container.addView(iv);
                return iv;
            }


            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {


                container.removeView((View) object);
            }


            @Override
            public int getCount() {
                return images.length;
            }


            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view==object;
            }
        }
    }
    展开全文
  • 粉红引导页面模板

    2021-01-14 20:38:30
    粉红引导页面模板
  • 欢迎引导页面.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • ProductTour引导页面.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 新手引导页面实现

    2017-01-04 16:41:19
    新手引导页面实现
  • Android App引导页面效果实现.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • Android实现欢迎页面,引导页面

    利用viewpager实现的引导页面,欢迎大家study

    引导图可谓是宅男福音啊,下面是gif图展示



    1:首先是创建一个guideActivity

    public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {
        private ViewPager viewPager;
        private GuidePagerAdapter pageAdapter;
        private List<View> views;
    
        private Button enter_btn;
    
        private ImageView[] points;
        private int pointIds[] = {R.id.point1, R.id.point2, R.id.point3};
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_guide);
            initView();
        }
    
        private void initView() {
            viewPager = (ViewPager) findViewById(R.id.viewpager);
    
            initViews();
        }
    
        private void initViews() {
            LayoutInflater inflate = LayoutInflater.from(this);
            views = new ArrayList<>();
            views.add(inflate.inflate(R.layout.guide_one, null));
            views.add(inflate.inflate(R.layout.guide_two, null));
            views.add(inflate.inflate(R.layout.guide_three, null));
    
            initPoints();
    
        }
    
        private void initPoints() {
            points = new ImageView[views.size()];
            for (int i = 0; i < views.size(); i++) {
                points[i] = (ImageView) findViewById(pointIds[i]);
            }
    
            initPager();
        }
    
        private void initPager() {
            pageAdapter = new GuidePagerAdapter(views, this);
            viewPager.setAdapter(pageAdapter);
            viewPager.addOnPageChangeListener(this);
    
    
            enter_btn = (Button) views.get(2).findViewById(R.id.enter);
            enter_btn.setOnClickListener(this);
        }
    
    
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
        }
    
        @Override
        public void onPageSelected(int position) {
            for (int i = 0; i < pointIds.length; i++) {
                if (position == i) {
                    points[i].setImageResource(R.drawable.page_select);
                } else {
                    points[i].setImageResource(R.drawable.page_unselect);
                }
            }
        }
    
        @Override
        public void onPageScrollStateChanged(int state) {
    
        }
    
        @Override
        public void onClick(View v) {
            startActivity(new Intent(this, MainActivity.class));
            //保存浏览过引导页的标记
            UserSaveUtils.saveBoolean(this, Constant.bunterkey.GUIDE, true);
            finish();
        }
    }

    2:该activity的布局文件

    <?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.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"
            android:flipInterval="30"
            android:persistentDrawingCache="animation" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:gravity="center_horizontal"
            android:orientation="horizontal">
    
            <ImageView
                android:id="@+id/point1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:src="@drawable/page_select" />
    
            <ImageView
                android:id="@+id/point2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:src="@drawable/page_unselect" />
    
            <ImageView
                android:id="@+id/point3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="5dp"
                android:src="@drawable/page_unselect" />
        </LinearLayout>
    </RelativeLayout>

    3:然后是这个viewpager的adapter,注意要复写ondestoryItem和instantteItem()这两个方法

    public class GuidePagerAdapter extends PagerAdapter {
        private List<View> views;
        private Context context;
    
        public GuidePagerAdapter(List<View> views, Context context) {
            this.views = views;
            this.context = context;
        }
    
        @Override
        public int getCount() {
            return views.size();
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(views.get(position));
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(views.get(position));
            return views.get(position);
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    }

    4:viewpager的每个页面都是一个view,这个view很简单,布局文件,小编就给出一个吧,因为都是一样的,样式可以自己修改,引导页面最后一张可以添加一个进入主页的按钮,点击的时候保存浏览过引导页的标记

    <?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">
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/guide_three" />
    
        <Button
            android:id="@+id/enter"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentTop="true"
            android:background="@null"
            android:text="进入"
            android:textSize="15sp" />
    </RelativeLayout>

    5:点击进入的时候保存标记


    6:添加一个welcomeActivity作为中转,根据保存的标记用于判断是跳入主页还是引导页面

    public class WelcomeActivity extends AppCompatActivity {
        private static final int TIME = 2000;
        private static final int GOHOME = 1000;
        private static final int GUIDE = 3000;
    
        private Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case GOHOME:
                        goHome();
                        break;
                    case GUIDE:
                        goGuide();
                        break;
                }
            }
        };
    
        private void goHome() {
            startActivity(new Intent(this, MainActivity.class));
            finish();
        }
    
        private void goGuide() {
            startActivity(new Intent(this, GuideActivity.class));
            finish();
        }
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_welcome);
    
            boolean isGuide = UserSaveUtils.getBoolean(this, Constant.bunterkey.GUIDE);
            if (isGuide) {
                handler.sendEmptyMessageDelayed(GOHOME, TIME);
            } else {
                handler.sendEmptyMessageDelayed(GUIDE, TIME);
            }
        }
    }

    7:在数据存储方面,用的是我自己封装好的sharepreference的一个工具类,相信选择Android开发的朋友都使用过,简单。这里也给出来给大家参考啦

    public class SaveInfoUtils {
    
        /**
         * 全局唯一id
         */
        private static final String INSTANCE_ID = "InstanceID";
    
        private SaveInfoUtils() {
        }
    
        public static SharedPreferences getSharedPreferences(Context context,
                                                             String spName) {
            SharedPreferences sp;
            if (TextUtils.isEmpty(spName)) {
                sp = PreferenceManager.getDefaultSharedPreferences(context);
            } else {
                sp = context.getSharedPreferences(spName, Context.MODE_PRIVATE);
            }
            return sp;
        }
    
        /**
         * 获取应用全局id
         *
         */
        public static String getInstanceID(Context context) {
            return getString(context, null, INSTANCE_ID);
        }
        /**
         * SharedPreferences保存全局id     *
         * @param value value
         */
        public static void saveInstanceID(Context context, String value) {
            saveString(context, null, INSTANCE_ID, value);
        }
        /**
         * SharedPreferences保存boolean类型的
         *
         * @param name  key
         * @param value value
         */
        public static void saveBoolean(Context context, String name, boolean value) {
            saveBoolean(context, null, name, value);
        }
    
        public static void saveBoolean(Context context, String spName, String name,
                                       boolean value) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.putBoolean(name, value);
            editor.apply();
        }
    
        /**
         * 获取保上面存的boolean类型的
         *
         * @param name   key
         * @param defuat 默认值
         */
        public static boolean getBoolean(Context context, String name, boolean defuat) {
            return getBoolean(context, null, name, defuat);
        }
    
        public static boolean getBoolean(Context context, String spName, String name, boolean defuat) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            return sp.getBoolean(name, defuat);
        }
    
        /**
         * SharedPreferences保存int类型的
         *
         * @param name  key
         * @param value value
         */
        public static void saveInt(Context context, String name, int value) {
            saveInt(context, null, name, value);
        }
    
        public static void saveInt(Context context, String spName, String name,
                                   int value) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.putInt(name, value);
            editor.apply();
        }
    
        /**
         * 获取保上面存的int类型的
         *
         * @param name   key
         * @param defuat 默认值
         */
        public static int getInt(Context context, String name, int defuat) {
            return getInt(context, null, name, defuat);
        }
    
        public static int getInt(Context context, String spName, String name, int defuat) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            return sp.getInt(name, defuat);
        }
    
        /**
         * SharedPreferences保存Long类型的
         *
         * @param name  key
         * @param value value
         */
        public static void saveLong(Context context, String name, long value) {
            saveLong(context, null, name, value);
        }
    
        public static void saveLong(Context context, String spName, String name,
                                    long value) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.putLong(name, value);
            editor.apply();
        }
    
        /**
         * 获取保上面存的Long类型的
         *
         * @param name key key
         */
        public static long getLong(Context context, String name, long defuat) {
            return getLong(context, null, name, defuat);
        }
    
        public static long getLong(Context context, String spName, String name, long defuat) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            return sp.getLong(name, defuat);
        }
    
        /**
         * SharedPreferences保存Float类型的
         *
         * @param name  key key
         * @param value value value
         */
        public static void saveFloat(Context context, String name, float value) {
            saveFloat(context, null, name, value);
        }
    
        public static void saveFloat(Context context, String spName, String name,
                                     float value) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.putFloat(name, value);
            editor.apply();
        }
    
        /**
         * 获取保上面存的Float类型的
         *
         * @param name key
         */
        public static float getFloat(Context context, String name, float defuat) {
            return getFloat(context, null, name, defuat);
        }
    
        public static float getFloat(Context context, String spName, String name, float defuat) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            return sp.getFloat(name, defuat);
        }
    
        /**
         * SharedPreferences保存String类型的
         *
         * @param name  key
         * @param value value
         */
        public static void saveString(Context context, String name, String value) {
            saveString(context, null, name, value);
        }
    
        public static void saveString(Context context, String spName, String name,
                                      String value) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.putString(name, value);
            editor.apply();
        }
    
        /**
         * 获取保上面存的String类型的
         *
         * @param name key
         */
        public static String getString(Context context, String name) {
            return getString(context, null, name);
        }
    
        public static String getString(Context context, String spName, String name) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            String res = sp.getString(name, "");
            if (TextUtils.isEmpty(res)) {
                return "";
            }
            return res;
        }
    
        /**
         * 删除name对应的一项
         *
         * @param name key
         */
        public static void deleteData(Context context, String name) {
            deleteData(context, null, name);
        }
    
        public static void deleteData(Context context, String spName, String name) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.remove(name);
            editor.apply();
        }
    
        /**
         * 清除所有保存的SharedPreference的内容
         */
        public static void clear(Context context) {
            clear(context, null);
        }
    
        /**
         * 清空指定的数据库的所有
         * @param context
         * @param spName
         */
        public static void clear(Context context, String spName) {
            SharedPreferences sp = getSharedPreferences(context, spName);
            Editor editor = sp.edit();
            editor.clear();
            editor.apply();
        }

    8:具体代码已经给出来了,希望大家能够看懂,也希望能够直接拿来使用。觉得赞的朋友可以顶一下哦。谢谢!

    展开全文
  • App首次进入引导页面切换和动画.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 第一次进入应用的时候,都会有一个引导页面引导页面的实现起来也很简单,实现的方式也有很多,下面是自己写的一个引导页面的效果,大致的实现思路为: 最外层是一个FragmentActivity,里面包含4个fragment,在...
  • 仿易信视频引导页面

    2016-11-04 17:34:16
    仿易信视频引导页面
  • 仿天天动听用WebView实现的引导页面.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • WebView实现引导页面

    2015-11-09 10:21:54
    仿天天动听用WebView实现的引导页面 网页 (Webview)
  • 安卓APP首次打开时会有半透明的蒙版将目标以高亮显示并配有说明文字或图片。这里用自定义dialog的方式实现引导页面
  • IOS--引导页面

    2015-10-27 17:03:21
    IOS--引导页面(是用UIScrollView来实现)
  • FWFD APP 引导页面设计.psd素材下载 APP 引导页面、APP 欢迎页面、PSD、引导页面
  • android引导页面

    2015-10-16 17:04:55
    效果图:引导页中的点一般不要留在图片中,要不屏幕适配不好做,这个点可以自己画,也可以是单独的...5、对于在引导页面中后退键的处理,结束引导页面,跳转到主界面 目录结构:1、WelcomActivity中代码:package com

    效果图:引导页中的点一般不要留在图片中,要不屏幕适配不好做,这个点可以自己画,也可以是单独的图片。

    这里写图片描述


    1、判断sp中的值,是否是第一次进入
    2、对viewpager进行监听
    3、当滑动到当前页面的时候,动态设置小圆点的显示图片
    4、滑动到最后的时候向sp中保存
    5、对于在引导页面中后退键的处理,结束引导页面,跳转到主界面
    目录结构:

    这里写图片描述

    1、WelcomActivity中代码:

    package com.example.viewpagerdemo;
    
    import utils.Constant;
    import utils.SPUtils;
    import android.annotation.SuppressLint;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBarActivity;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    
    public class WelcomeActivity extends ActionBarActivity implements View.OnClickListener{public WelcomeActivity() {
        // TODO Auto-generated constructor stub
    }
        private static final String TAG = "WelcomeActivity";
        private SectionsPagerAdapter mSectionsPagerAdapter;
        private ViewPager mViewPager;
        //移动到当前三个点时的显示图标;
        private ImageView mPosition1, mPosition2, mPosition3;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_welcome);
    
            getSupportActionBar().hide();
            mSectionsPagerAdapter = new SectionsPagerAdapter(
                    getSupportFragmentManager(), this);
            mViewPager = (ViewPager) findViewById(R.id.pager);
            mViewPager.setAdapter(mSectionsPagerAdapter);
            initViewPagerListener();
            mPosition1 = (ImageView) findViewById(R.id.welcome1);
            mPosition2 = (ImageView) findViewById(R.id.welcome2);
            mPosition3 = (ImageView) findViewById(R.id.welcome3);
    
        }
        private void initViewPagerListener() {
    
            mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    setCurrentPagePosition(position+1);
                }
            });
        }
        //后退键的处理;
        @Override
        public void onBackPressed() {
            super.onBackPressed();
            closeActivity();
        }
        //后退键的处理,点击返回则结束引导页面,直接进入主页面;
        @Override
        public void onClick(View v) {   
            closeActivity();
        }
        //向sp中保存数据;
        private void closeActivity() {
            SPUtils.put(this, Constant.IS_FIRST, false);
            finish();
        }
        //根据显示的不同位置的图片时,显示不同的点;
        public void setCurrentPagePosition(int position) {
            Log.d(TAG, "position : " + position);
            mPosition1.setImageResource(R.drawable.welcome_pass);
            mPosition2.setImageResource(R.drawable.welcome_pass);
            mPosition3.setImageResource(R.drawable.welcome_pass);
            switch(position) {
            case 1:
                mPosition1.setImageResource(R.drawable.welcome_current);
                break;
            case 2:
                mPosition2.setImageResource(R.drawable.welcome_current);
                break;
            case 3:
                mPosition3.setImageResource(R.drawable.welcome_current);
                break;
            }
        }
        public class SectionsPagerAdapter extends FragmentPagerAdapter {
    
            private View.OnClickListener mListener;
    
            public SectionsPagerAdapter(FragmentManager fm, View.OnClickListener listener) {
                super(fm);
                mListener = listener;
            }
    
            @Override
            public Fragment getItem(int position) {
                // getItem is called to instantiate the fragment for the given page.
                // Return a PlaceholderFragment (defined as a static inner class
                // below).
                return PlaceholderFragment.newInstance(position + 1, mListener);
            }
    
            @Override
            public int getCount() {
                // Show 3 total pages.
                return 3;
            }
    
        }
    
        /**
         * A placeholder fragment containing a simple view.
         */
        @SuppressLint("ValidFragment")
        public static class PlaceholderFragment extends Fragment {
            /**
             * The fragment argument representing the section number for this
             * fragment.
             */
            private static final String ARG_SECTION_NUMBER = "section_number";
    
            private int mSelection = 0;
    
            private OnClickListener mListener;
    
            /**
             * Returns a new instance of this fragment for the given section number.
             * @param listener 
             * @param mPositionListener 
             */
            public static PlaceholderFragment newInstance(int sectionNumber, OnClickListener listener) {
    
                PlaceholderFragment fragment = new PlaceholderFragment(sectionNumber, listener);
                Bundle args = new Bundle();
                args.putInt(ARG_SECTION_NUMBER, sectionNumber);
                fragment.setArguments(args);
                return fragment;
            }
    
            @SuppressLint("ValidFragment")
            public PlaceholderFragment(int sectionNumber, OnClickListener listener) {
                mSelection = sectionNumber;
                mListener = listener;
            }
    
            public PlaceholderFragment() {}
    
            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                    Bundle savedInstanceState) {
                Log.d(TAG, "mSelection " + mSelection);
                View rootView = inflater.inflate(R.layout.fragment_welcome,
                        container, false);
                ImageView imageView = (ImageView) rootView
                        .findViewById(R.id.section_label);
    
                ImageView start = (ImageView) rootView.findViewById(R.id.welcome_start);
                start.setOnClickListener(mListener);
                switch(mSelection) {
                case 1:
                    imageView.setBackgroundResource(R.drawable.welcome_1);
                    break;
                case 2:
                    imageView.setBackgroundResource(R.drawable.welcome_2);
                    break;
                case 3:
                    imageView.setBackgroundResource(R.drawable.welcome_3);
                    start.setVisibility(View.VISIBLE);
                    break;
                }
    
                return rootView;
            }
        }
    
    }
    

    2、MainActivity中代码:

    public class MainActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //如果是每一次的话则进入欢迎页面;
            if(SPUtils.getIsFisrst(this)==true){
                startActivity(new Intent(this,WelcomeActivity.class));
            }
        }
    }

    Demo下载地址:http://download.csdn.net/detail/androidxiaogang/9187197

    展开全文
  • 简洁好看的电商app引导页面以及注册页面UI界面设计 sketch素材下载 APP引导页面设计、sketch、ui界面设计、引导页、时尚购物APP、注册、电商引导页、购物APP登录
  • 蒙板引导页面

    千次阅读 2015-12-10 15:54:46
    一、引导页面的弹出 使用FrameLayout:  查找到contentview的父亲,是一个FrameLayout类型的布局文件,id为android:id/content。在这个FrameLayout的最上层插入引导view,即可实现引导功能。  示例代码: ...

    一、引导页面的弹出

    总结网上资料得到以下几种弹出方法:

    1.使用FrameLayout:

    查找到contentview的父亲,是一个FrameLayout类型的布局文件,id为android:id/content。在这个FrameLayout的最上层插入引导view,即可实现引导功能。示例代码:

    FrameLayout frameLayout=(FrameLayout)getActivity().findViewById(android.R.id.content);
    View view=new View(getActivity());
    view.setOnClickListener(null);
    view.setBackgroundColor(0x80000000);
    FrameLayout.LayoutParams layoutParams=new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
    view.setLayoutParams(layoutParams);
    frameLayout.addView(view);
    

    2.使用WindowManager方法:

    使用WindowManager在屏幕上弹出一个window,在window上显示引导view,示例代码:

    WindowManager windowManager = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
                    WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
                    layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION;
                    layoutParams.format = PixelFormat.RGBA_8888;
                    layoutParams.gravity = Gravity.LEFT | Gravity.TOP;
                    layoutParams.width=720;
                    layoutParams.height=1280;
                    View view = new View(getActivity());
                    view.setOnClickListener(null);
                    view.setBackgroundColor(0x80000000);
                    windowManager.addView(view,layoutParams);
    

    3.使用PopupWindow/AlertDialog方法

    弹出一个合屏的PopupWindow/AlertDialog来显示引导view

    4.使用Activity方法

    打开一个新的Activity来显示引导view

    二、引导页面的显示

    一般一说可以显示任何内容,包括文字、图片和动画等,这些内容一般需要和被引导页面的某些控件的位置一致。所以在显示引导页面的时候,可以将被引导页面的控件坐标和大小等信息传递给引导页面,让引导页面在正确的位置显示内容。
    另外一种特殊的显示是在引导页面上“打洞”,显示出某些被引导页面的控件,这种方法的一种实现方法是将对应的位置或者更大的范围设置成完全透明的区域。
    下面是一段设置透明区域的代码:

    private void init(){
        mPaint=new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));                    
    }
    @Override
    protected void onDraw(Canvas canvas) {
        if(mBitmap==null){
            mBitmap=Bitmap.createBitmap(getWidth(),getHeight(), Bitmap.Config.ARGB_8888);
            mBitmapCanvas=new Canvas(mBitmap);
        }
        mBitmapCanvas.drawColor(0x80000000, PorterDuff.Mode.SRC); //给bitmap画一个底色
        mBitmapCanvas.drawRect(0, 0, getWidth(), getHeight() / 3, mPaint); //再画一个透明的方块
        canvas.drawBitmap(mBitmap,0,0,null); //将bitmap画到界面上
    }
    

    透明区域显示的位置可以通过计算得知:
    1.使用view.getLocationOnScreen获取被透控件的屏幕相对位置
    2.使用maskview.getLocationOnScreen获取引导页面的屏幕相对位置
    3.计算被透控件相对引导页面的位置,然后画透明框

    三、引导页面与被引导页面的交互

      一般的应用在点击引导页面时,直接让引导页面消失,不存在交互的过程,而有时候则需要进行交互。交互的方式有:

    • 引导页面调用被引导页面的某些方法
    • 引导页面透传触摸事件
      重写onTouchEvent,如果触摸点是在指定区域内,就返回fase透传触摸事件
    展开全文
  • APP引导页面插图 .ai素材下载 AI、引导页、插图、插画
  • 仿易信引导页面

    2016-11-05 23:04:08
    目前的引导页面大多数就是ViewPager,不过已经有很多app的引导页面变为动画+viewpager,第一次见到,感觉很新颖,用户体验会瞬间提升一阶。那么问题来了,这样的引导页面怎么做的呢?
  • Android引导页面

    2016-06-22 11:04:22
    Android引导页面,停留数秒后跳转到主界面。 loading.xml xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_par
  • android 上下滑动的引导页面

    热门讨论 2014-10-15 17:27:47
    具体代码是在网上找的,自己小修改了下,能够运行,引导页面的上下滑动效果!具体代码是在网上找的,自己小修改了下,能够运行,引导页面的上下滑动效果!
  • 引导页面的实现

    2017-02-07 10:37:43
    第一次进入应用的时候,都会有一个引导页面引导页面的实现起来也很简单,实现的方式也有很多,下面是自己写的一个引导页面的效果,大致的实现思路为: 最外层是一个FragmentActivity,里面包含4个fragment,在...
  • iOS 启动引导页面

    2016-07-17 09:23:31
    启动引导页面在诸多地方可用得到,如新启动某一个程序时,通常会出现启动引导页。 启动引导页面主要是设置项目第一个加载的视图是一个引导性作用的滑动视图和分页视图,滑动视图的小大可根据自己的需求设定。在引导...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,910
精华内容 2,764
关键字:

引导页面