精华内容
下载资源
问答
  • 超简单的新手引导页的实现设计(使用DialogFragment)
    2019-02-27 18:06:09

    通常一个app都会有新手引导页,就是进入app后打开相应的页面会出现引导页,这里是用DialogFragment实现一个简单又比较完善的新手引导页功能。

    public class GuideFragment extends BaseDialogFragment implements View.OnClickListener {
    
        private static final String GUIDE_PROP = "Guide.prop";
    
        protected static Set<String> sHasShowSet = new HashSet<>();
    
        protected static String mKey;
    
        @BindView(R.id.cl_guide) ConstraintLayout mClGuide;
    
        protected static GuideFragment newInstance(int layoutRes) {
            Bundle args = new Bundle();
            args.putInt(Constant.KEY_GUIDE_RES, layoutRes);
            GuideFragment fragment = new GuideFragment();
            fragment.setArguments(args);
            return fragment;
        }
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setStyle(STYLE_NO_TITLE, R.style.TransparentDialog);
        }
    
        @Override
        protected int getFragmentLayout() {
            return getArguments().getInt(Constant.KEY_GUIDE_RES);
        }
    
        @Override
        protected void initViewComponent(@Nullable Bundle savedInstanceState) {
            super.initViewComponent(savedInstanceState);
            adapterView(mKey);
            if (getView() != null) {
                getView().setOnClickListener(this);
            }
        }
    
        /**
         * @param activity
         * @param layoutRes 布局资源文件
         * @param key 唯一标识,区分是否显示过,通过SharedPreferences进行保存
         */
        public static void show(AppCompatActivity activity, int layoutRes, String key) {
            mKey = key;
            if (!sHasShowSet.contains(key)) {
                if (getNeedShowGuide(activity,key)) {
                    setNoNeedShowGuide(activity,key);
                    newInstance(layoutRes)
                            .show(activity.getSupportFragmentManager(),activity.getClass().getSimpleName());
                }
                sHasShowSet.add(key);
            }
        }
    
        /**
         * 根据实际情况适配自己的布局
         * @param key 根据key区分哪个引导页进行不同的适配
         */
        private void adapterView(String key) {
            FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) mClGuide.getLayoutParams();
            mClGuide.setLayoutParams(layoutParams);
        }
    
        @Override
        public void onClick(View v) {
            dismiss();
        }
    
        protected static boolean getNeedShowGuide(Context context,String key) {
            return SPUtils.getInstance(context, GUIDE_PROP).getBoolean(key, true);
        }
    
    
        protected static void setNoNeedShowGuide(Context context,String key) {
            SPUtils.getInstance(context, GUIDE_PROP).put(key, false);
        }
    }

    上面这个类是具体的实现类,里面有相应的注视,想要在你的页面弹出引导页很简单,下面把代码再贴出来。

    public class MainActivity extends BaseActivity {
    
        private static final String GUIDE_KEY = "main_guide_pager";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        //通过实现下面的两个方法就可以了
    
        @Override
        protected int getGuideLayout() {
            return R.layout.guide_layout;
        }
    
        @Override
        protected String getGuideKey() {
            return GUIDE_KEY;
        }
    }

    只需要实现里面的两个方法就可以了,这两个方法是在基类中的,下面是activity基类

    public abstract class BaseActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            showGuideDialog();
        }
    
        /**
         * 显示引导页,可以根据具体的业务需求进行显示控制
         */
        protected void showGuideDialog(){
            if (getGuideLayout() != -1 && !TextUtils.isEmpty(getGuideKey())) {
                GuideFragment.show(this, getGuideLayout(), getGuideKey());
            }
        }
    
    
        /**
         * override this function for show guide view, see to {@link #getGuideKey()}.
         */
        protected int getGuideLayout() {
            return -1;
        }
    
        /**
         * override this function for show guide view, see to {@link #getGuideKey()}.
         */
        protected String getGuideKey() {
            return "";
        }
    }

    很方便的就实现了新手引导的功能,下面把项目的下载地址贴出来哈。

    https://github.com/guoliuya/GuidePagerDemo.git

    更多相关内容
  • swift_新手引导页

    2018-10-19 15:22:13
    swift 语言实现通用App安装引导页的实现,其实这个功能和引导页差不多用UIScrollView的contentSize和contentOffset(偏移量)这两个属性
  • 安卓APP首次打开时会有半透明的蒙版将目标以高亮显示并配有说明文字或图片。这里用自定义dialog的方式实现引导页面。
  • Android 新手引导页

    2018-02-26 16:58:43
    有需要的可以看看哦,不错的新手引导页,代码是完整的,Android studio 运行,eclipse的可以复制代码哦
  • 新手引导页面实现

    2017-01-04 16:41:19
    新手引导页面实现
  • GuideHelper 实现Android新手引导页可以在提示也绘制实际的view,在view的上下左右位置添加提示信息的图片gradle导入compile 'com.shizhefei:GuideHelper:1.0.5'#代码如下:final GuideHelper guideHelper = new ...

    GuideHelper 实现Android新手引导页

    可以在提示也绘制实际的view,在view的上下左右位置添加提示信息的图片

    gradle导入

    compile 'com.shizhefei:GuideHelper:1.0.5'

    #代码如下:

    final GuideHelper guideHelper = new GuideHelper(MainActivity.this);

    TipData tipData1 = new TipData(R.drawable.tip1, Gravity.RIGHT | Gravity.BOTTOM, iconView);

    tipData1.setLocation(0, -DisplayUtils.dipToPix(v.getContext(), 50));

    guideHelper.addPage(tipData1);

    //

    TipData tipData2 = new TipData(R.drawable.tip2, citysView);

    guideHelper.addPage(tipData2);

    //

    TipData tipData3 = new TipData(R.drawable.tip3, infoLayout);

    guideHelper.addPage(tipData3);

    guideHelper.addPage(tipData1, tipData2, tipData3);

    //add custom view

    LayoutInflater ll = LayoutInflater.from(MainActivity.this);

    View testView = ll.inflate(R.layout.custom_view,null);

    TipData tipDataCustom= new TipData(Gravity.CENTER,new Rect(),testView);

    testView.findViewById(R.id.guide_close).setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    guideHelper.dismiss();

    }

    });

    guideHelper.setAutoDismiss(false);//一般不设置,默认是true

    guideHelper.addPage(tipDataCustom);

    guideHelper.show(false);

    // guideHelper.show(true);

    #效果如下:

    625332134c6f4d4600884b99daebf603.png

    ##主力类库##

    有了这些类库,让你6的飞起

    联系方式和问题建议

    QQ 群: 开源项目使用交流,问题解答: 549284336(开源盛世)

    License

    Copyright 2016 shizhefei(LuckyJayce)

    Licensed under the Apache License, Version 2.0 (the "License");

    you may not use this file except in compliance with the License.

    You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software

    distributed under the License is distributed on an "AS IS" BASIS,

    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    See the License for the specific language governing permissions and

    limitations under the License.

    展开全文
  • vue实现新手引导组件

    2021-10-19 15:28:01
    vue实现新手引导
  • 每个项目都要写新手引导页,很麻烦,自己简单的装置了一个新手引导页,很实用,也很简单,只需要将HSGuidePage的两个文字导入, 在Appdelegate中简单设置就能完成。新手,代码又点烂,希望大家莫要取笑,更希望大家...
  • OC-添加新手引导页

    2018-10-19 15:18:55
    iOS OC 语言实现通用App安装引导页的实现,其实这个功能和引导页差不多用UIScrollView的contentSize和contentOffset(偏移量)这两个属性
  • Demo介绍:封装新手引导页面,有镂空部分,附有描述,只显示一次,控制器调用简单。 实现思路:实现一个UIView,添加到keyWindow,通过设置其layer的mask属性来实现镂空区域。 开发语音:Objective-C。 CSDN博客...
  • 新手引导页面效果,在一个视图上覆盖一个半透明层,部分全透,带箭头指示并显示操作效果说明等,具体看运行效果吧,使用简单
  • 基于ViewPager实现的新手引导页 1.底部圆点跟随手指移动 2.最后一页带进出主界面按钮
  • ios-新手引导页.zip

    2019-07-11 18:49:11
    适用于所有App的新手指引,使用简单,动画顺畅! 如果你觉得还不错,希望赏个star,谢谢了! Github传送门:https://github.com/weiming4219/ZWMGuideView
  • 贴一个刚做的新手引导页

    千次阅读 2019-04-01 17:41:18
    前阵子有个新手引导的需求,本来同事说用UI框架的modal框做,想了想感觉下一步的动作太生硬了,干脆就自己动手写了写,效果还不错。 主要用css animation做跳转动画,用绝对定位定位引导框 效果如下: vue文件 <...

    前阵子有个新手引导的需求,本来同事说用UI框架的modal框做,想了想感觉下一步的动作太生硬了,干脆就自己动手写了写,效果还不错。
    主要用css animation做跳转动画,用绝对定位定位引导框
    效果如下:
    在这里插入图片描述

    vue文件

    <!-- 新手引导 -->
    <template>
      <div>
        <div class="model">
          <div class="page-container">
            <div class="step1 text-center shadow" v-show='step === 1'>
              <i class="btn-close el-icon-close" @click='closeGuide'></i>
              <img src="./../images/guide/guide-img-start.png" alt="">
              <p class="font-18 color-333 text">{{$t('m.guide.text1')}}</p>
              <p class="font-12 color-999 choose">{{$t('m.guide.choose')}}</p>
              <el-popover
                placement="bottom"
                width="160"
                v-model="showPopover"
                trigger="hover">
                <ul class="lang-list">
                  <li class="font-14"  @click='changeLang(item)' v-for="(item,index) in list" :key='index' :value='item.lang'>{{item.lang}}</li>
                </ul>
                <span slot="reference" class="color-555 touch">{{lang}} &nbsp;&nbsp; <i class="el-icon-arrow-down"></i> </span>
              </el-popover>
              <br>
              <el-button type='warning' @click="step = 2" class="btn">{{$t('m.common.next')}}</el-button>
            </div>
            <div class="step2 shadow"
                  :class="{nextStep2: step === 2 && direction === 'next', preStep2: step === 2 && direction === 'pre',
                          nextStep3: step === 3 && direction === 'next', preStep3: step === 3 && direction === 'pre',
                          nextStep4: step === 4 && direction === 'next', preStep4: step === 4 && direction === 'pre',
                          nextStep5: step === 5 && direction === 'next'}"
                  v-show='step !== 1'>
              <div class="mark text-center">
                <span v-if='step === 2'>{{$t('m.menu.title2')}}</span>
                <span v-if='step === 3'>{{$t('m.menu.title3')}}</span>
                <span v-if='step === 4'>{{$t('m.menu.title4')}}</span>
                <span v-if='step === 5'>{{$t('m.header.helpCenter')}}</span>
                &nbsp;&nbsp; <i class="el-icon-arrow-down"></i></div>
              <div class="vl"></div>
              <div class="main">
                <i class="btn-close el-icon-close" @click='closeGuide'></i>
                <img src="./../images/guide/guide-img-adcenter.png" class="fl" alt="">
                <div class="fr right">
                  <p v-if='step === 2'>{{$t('m.guide.text2')}}</p>
                  <p v-if='step === 3'>{{$t('m.guide.text3')}}</p>
                  <p v-if='step === 4'>{{$t('m.guide.text4')}}</p>
                  <p v-if='step === 5'>{{$t('m.guide.text5')}}</p>
                  <p class="text-right btn-list">
                    <el-button plain @click="step--, direction = 'pre'">
                      <img src="./../images/guide/guide-icon-left-default.png" alt="">
                    </el-button>
                    <el-button class="btn-next"  v-if='step !== 5'  @click="step++, direction = 'next'">
                      <img src="./../images/guide/guide-icon-right-default.png" alt="">
                    </el-button>
                    <el-button  v-if='step === 5'  @click='closeGuide' class="btn-next">
                      {{$t('m.guide.start')}}
                    </el-button>
                  </p>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      // props: [ 'step' ],
      data () {
        return {
          step: 1,
          direction: 'next',
          showPopover: false,
          list: [
            {
              lang: 'English',
              code: 'en'
            }, {
              lang: 'Spanish',
              code: 'es'
            }, {
              lang: 'Portuguese',
              code: 'pt'
            }, {
              lang: 'Russian',
              code: 'ru'
            }, {
              lang: 'Italian',
              code: 'id'
            }, {
              lang: 'French',
              code: 'fr'
            }, {
              lang: 'German',
              code: 'de'
            }, {
              lang: 'Polish',
              code: 'pl'
            }
          ],
          lang: 'English'
        }
      },
    
      components: {},
    
      created: function () {
      },
    
      methods: {
        changeLang: function (item) {
          this.$emit('changeLang', item)
          this.lang = item.lang
          this.showPopover = false
        },
        closeGuide: function () {
          this.$emit('closeGuide')
        }
      }
    }
    
    </script>
    <style lang='stylus' scoped>
    .page-container{
      position relative
      line-height 12px
    }
    .model{
      width 100vw
      height 100vh
      background rgba(0, 0, 0, 0.3)
      position fixed
      top 0
      left 0
      z-index 999
    }
    .shadow{
      box-shadow:0px 2px 3px 1px rgba(0,0,0,0.1)
      border-radius:4px
    }
    .btn-close{
      position absolute
      top 5px
      right 5px
      cursor pointer
    }
    .main{
      padding 16px 7px 12px 16px
      .right{
        width 240px
        p{
          font-size 14px
          color #333333
          line-height 22px
        }
        .btn-list{
          position absolute
          bottom 12px
          right 7px
          .el-button{
            width 60px
            height 24px
          }
          .btn-next{
            background rgba(255,233,207,1)
            border-radius 2px
            border 1px solid rgba(251,136,0,1)
          }
        }
      }
    }
    .step1{
      width 400px
      height 474px
      margin auto
      padding 60px 48px 0
      background #fff
      margin-top 200px
      position relative
      .text{
        line-height 28px
        margin-top 40px
        margin-bottom 30px
      }
      .choose{
        line-height 17px
        font-style italic
        margin-bottom 10px
      }
      .btn{
        width 140px
        height 40px
        margin-top 40px
      }
    }
    .step2{
      position absolute
      top 170px
      left 80px
      width 388px
      height 140px
      background #fff
    }
    .nextStep2{
      animation goToStep2 0.5s ease
    }
    .preStep2{
      animation backToStep2 0.5s ease
    }
    .preStep3{
      left 200px
      animation backToStep3 0.5s ease
    }
    .nextStep3{
      left 200px
      animation goToStep3 0.5s ease
    }
    .preStep4{
      left 320px
      width 388px
      animation backToStep4 0.6s ease
      .mark{
        width 160px
      }
    }
    .nextStep4{
      left 320px
      width 388px
      animation goToStep4 0.5s ease
      .mark{
        width 160px
      }
    }
    .nextStep5{
      left unset
      left 825px
      top 90px
      animation goToStep5 0.6s ease
      .mark{
        width 180px
        left 40px
      }
      .vl{
        left 100px
      }
    }
    @keyframes backToStep2 {
      0% {
        transform: scale(1.0)
        left 200px
      }
      50%{
        transform: scale(0)
        left 0px
      }
      100% {
        transform: scale(1.0)
        left 80px
      }
    }
    @keyframes goToStep2 {
      from {
        transform: scale(0)
      }
      to{
        transform: scale(1.0)
      }
    }
    @keyframes goToStep3 {
      0% {
        transform: scale(1.0)
        left 80px
      }
      50%{
        transform: scale(0)
        left 140px
      }
      100% {
        transform: scale(1.0)
        left 200px
      }
    }
    @keyframes backToStep3 {
      0% {
        transform: scale(1.0)
        left 320px
      }
      50%{
        transform: scale(0)
        left 160px
      }
      100% {
        transform: scale(1.0)
        left 200px
      }
    }
    @keyframes goToStep4 {
      0% {
        transform: scale(1.0)
        left 200px
      }
      50%{
        transform: scale(0)
        left 240px
      }
      100% {
        transform: scale(1.0)
        left 320px
      }
    }
    @keyframes backToStep4 {
      0% {
        transform: scale(1.0)
        left 825px
      }
      50%{
        transform: scale(0)
        left 520px
        top 120px
      }
      100% {
        transform: scale(1.0)
        left 320px
        top 170px
      }
    }
    @keyframes goToStep5 {
      0% {
        transform: scale(1.0)
        left 320px
      }
      50%{
        transform: scale(0)
        left 520px
        top 120px
      }
      100% {
        transform: scale(1.0)
        left 825px
        top 90px
      }
    }
    .mark{
      width 125px
      height 40px
      line-height 40px
      border-radius 20px
      position absolute
      font-size 13px
      top -60px
      left 0
      background #fff
    }
    .vl{
      width 2px
      height 20px
      background #ffffff
      position absolute
      top -20px
      left 60px
    }
    .lang-list{
        cursor pointer
        list-style none
        color #222222
        line-height 36px
        padding-top 10px
        .user-email{
          padding-left 24px
          color #555
          border-bottom 1px solid #ddd
        }
        li{
          padding-left 24px
        }
        li:hover{
          color #ff9e00
          background rgba(255,158,0,0.1)
        }
      }
    </style>
    
    
    展开全文
  • 手机APP新手引导页步骤演示模板,DIV CSS布局设计,全套模板,包括电工认证流程、抢单流程、发需求流程等HTML专题模板页面。
  • 首先看一下Demo效果图:这种遮罩通常作为新手引导页面。通常有镂空的一部分,附有描述,指引用户第一次进入界面该如何操作,只显示一次。下面给出两种实现思路:第一种:UI切好整张图片,直接显示到UIWindow上,不...

    首先看一下Demo效果图:


    这种遮罩通常作为新手引导页面。通常有镂空的一部分,附有描述,指引用户第一次进入界面该如何操作,只显示一次。

    下面给出两种实现思路:

    第一种:UI切好整张图片,直接显示到UIWindow上,不推荐使用该方法。

    优点:程序实现简单,便捷。

    缺点:适配不同机型需要多套图片(Android内心是崩溃的),后期迭代界面改动则要更新图片,UI工作量庞大。

    第二种:Demo使用的方法,自己实现一个UIView,通过设置其layer的mask属性来实现镂空区域。

    优点:UI只提供描述的图片即可,减少应用大小,灵活适配不同机型。

    缺点:代码较第一种略多,后期迭代界面改动要更新控件frame。


    下面贴上核心代码:

    控制器,ViewController:

    #import "ViewController.h"
    #import "HWGuidePageManager.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor whiteColor];
        
        // 创建控件
        [self creatControl];
    }
    
    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        
        // 引导视图
        [self showGuidePage];
    }
    
    - (void)creatControl
    {
        // 底图
        UIImageView *imgView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].bounds];
        imgView.image = [UIImage imageNamed:@"backImg"];
        imgView.contentMode = UIViewContentModeScaleAspectFill;
        [self.view addSubview:imgView];
    }
    
    - (void)showGuidePage
    {
        // 判断是否已显示过
        if (![[NSUserDefaults standardUserDefaults] boolForKey:HWGuidePageHomeKey]) {
            // 显示
            [[HWGuidePageManager shareManager] showGuidePageWithType:HWGuidePageTypeHome completion:^{
                [[HWGuidePageManager shareManager] showGuidePageWithType:HWGuidePageTypeMajor];
            }];
        }
    }
    
    @end

    封装的指引页管理类,HWGuidePageManager.h:

    #import <Foundation/Foundation.h>
    
    typedef void(^FinishBlock)(void);
    
    typedef NS_ENUM(NSInteger, HWGuidePageType) {
        HWGuidePageTypeHome = 0,
        HWGuidePageTypeMajor,
    };
    
    @interface HWGuidePageManager : NSObject
    
    // 获取单例
    + (instancetype)shareManager;
    
    /**
     显示方法
    
     @param type 指引页类型
     */
    - (void)showGuidePageWithType:(HWGuidePageType)type;
    
    /**
     显示方法
    
     @param type 指引页类型
     @param completion 完成时回调
     */
    - (void)showGuidePageWithType:(HWGuidePageType)type completion:(FinishBlock)completion;
    
    @end

    HWGuidePageManager.m:

    #import "HWGuidePageManager.h"
    
    @interface HWGuidePageManager ()
    
    @property (nonatomic, copy) FinishBlock finish;
    @property (nonatomic, copy) NSString *guidePageKey;
    @property (nonatomic, assign) HWGuidePageType guidePageType;
    
    @end
    
    @implementation HWGuidePageManager
    
    + (instancetype)shareManager
    {
        static HWGuidePageManager *instance = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            instance = [[self alloc] init];
        });
        
        return instance;
    }
    
    - (void)showGuidePageWithType:(HWGuidePageType)type
    {
        [self creatControlWithType:type completion:NULL];
    }
    
    - (void)showGuidePageWithType:(HWGuidePageType)type completion:(FinishBlock)completion
    {
        [self creatControlWithType:type completion:completion];
    }
    
    - (void)creatControlWithType:(HWGuidePageType)type completion:(FinishBlock)completion
    {
        _finish = completion;
    
        // 遮盖视图
        CGRect frame = [UIScreen mainScreen].bounds;
        UIView *bgView = [[UIView alloc] initWithFrame:frame];
        bgView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.7f];
        [bgView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)]];
        [[UIApplication sharedApplication].keyWindow addSubview:bgView];
        
        // 信息提示视图
        UIImageView *imgView = [[UIImageView alloc] init];
        [bgView addSubview:imgView];
        
        // 第一个路径
        UIBezierPath *path = [UIBezierPath bezierPathWithRect:frame];
        switch (type) {
            case HWGuidePageTypeHome:
                // 下一个路径,圆形
                [path appendPath:[UIBezierPath bezierPathWithArcCenter:KSuitPoint(227, 188) radius:KSuitFloat(46) startAngle:0 endAngle:2 * M_PI clockwise:NO]];
                imgView.frame = KSuitRect(220, 40, 100, 100);
                imgView.image = [UIImage imageNamed:@"hi"];
                _guidePageKey = HWGuidePageHomeKey;
                break;
                
            case HWGuidePageTypeMajor:
                // 下一个路径,矩形
                [path appendPath:[[UIBezierPath bezierPathWithRoundedRect:KSuitRect(5, 436, 90, 40) cornerRadius:5] bezierPathByReversingPath]];
                imgView.frame = KSuitRect(100, 320, 120, 120);
                imgView.image = [UIImage imageNamed:@"ly"];
                _guidePageKey = HWGuidePageMajorKey;
                break;
                
            default:
                break;
        }
        
        // 绘制透明区域
        CAShapeLayer *shapeLayer = [CAShapeLayer layer];
        shapeLayer.path = path.CGPath;
        [bgView.layer setMask:shapeLayer];
    }
    
    - (void)tap:(UITapGestureRecognizer *)recognizer
    {
        UIView *bgView = recognizer.view;
        [bgView removeFromSuperview];
        [bgView removeGestureRecognizer:recognizer];
        [[bgView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
        bgView = nil;
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:_guidePageKey];
        
        if (_finish) _finish();
    }
    
    @end

    Demo下载链接:http://code.cocoachina.com/view/137011。

    写博客的初心是希望大家共同交流成长,博主水平有限难免有偏颇之处,欢迎批评指正。

    展开全文
  • vue 新手引导页功能

    万次阅读 2019-06-03 01:50:59
    背景:项目中 需要添加 新手引导页功能,效果如下图:解决方法:vue + vue-intro + intro.js1.安装依赖npm i vue-introjs npm i intro.js复制代码2.修改 webpack 文件 在 webpack.dev.conf.js webpack.prod.conf.js...
  • 1. 背景基本上每个IOS APP都会有新手引导页面这个功能,常规的就是几张静态图片,可以左右滚动。既然涉及到图片,就肯定会存在适配的问题(为了达到最优的体验效果,一般都会针对不同的分辨率设计不同尺寸的图片),...
  • ios新手引导页(oc 和swift)

    千次阅读 2018-10-23 18:18:19
    在第一次安装App, 或者更新App的时候, 常常会出现一个引导界面, 昨天晚上花了点时间, 写了个引导页,太晚就没发出来, 实现一个引导页其实并不困难. 请看代码 点我下载Swift的Demo 点我下载OC的demo 我们用...
  • 新手引导页

    2016-10-18 15:42:09
    在项目中我们经常会看到下载的应用第一进入或者更新之后再进来时会看到对本应用的一些介绍及使用,这就是新手引导,下面我们简单的实现新手引导页面; 1.创建一个继承UIWindow的类目命名为 UIWindow+Extension,...
  • 主要介绍了微信小程序的引导页实现代码,需要的朋友可以参考下
  • GuideView Android新手引导页

    千次阅读 2018-04-27 13:04:54
    转自:http://p.codekk.com/detail/Android/llxdaxia/GuideView把GuideView下的guideview包...GuideView项目地址:llxdaxia/GuideView 简介:Android 引导页,可定制性强更多:作者 提 Bug 示例 APK 标签:And...
  • iOS 新手引导页面

    千次阅读 2016-02-25 10:28:36
    最近公司让添加新手引导界面,在网上没找到合适的三方库,索性自己写了一个,效果图如下, 使用最简单的控件所写,简单易用易拓展,希望大家能够喜欢 源码链接如下 ,欢迎下载mark 点击打开链接
  • 仿85同城的超酷的手势滑动新手引导页
  • 在你的应用第一次进来的时候显示新手引导图片,其他时候再进来不会显示(除非删除重装),这样就需要在你对应的页面viewDidLoad方法中判断该控制器是否是第一次进来,进而决定引导页的显示与否,代码如下,仅做自己...
  • 基于ViewPager实现的新手引导页(最后一页带按钮)
  • 快速简单的给你的app加入引导页。 只需要传入几张引导页面图片即可,在您的app的根页面的viewDidLoad中添加如下代码即可: NSMutableArray *images = [NSMutableArray new];[images addObject:[UIImage ...
  • 1.由于项目的需要,我今天学习了新手的引导,接下我来说下新手引导的使用方法:(在程序中运行一次)接下来是实现代码:在AppDelegate.m 的代码:- (BOOL)application:(UIApplication *)application ...(NSDictionary *)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,365
精华内容 4,546
关键字:

新手引导页