返回顶部
首页 > 资讯 > 移动开发 >Android利用浮动窗口提示用户操作
  • 942
分享到

Android利用浮动窗口提示用户操作

Android 2022-06-06 07:06:07 942人浏览 独家记忆
摘要

上次我们实现了利用viewpager实现对新用户的功能性介绍,今天我们来显示利用浮动窗口对用户进行操作的引导。先看效果图。 虽然界面比较丑,但是可以看到我们还是可以实现对

上次我们实现了利用viewpager实现对新用户的功能性介绍,今天我们来显示利用浮动窗口对用户进行操作的引导。先看效果图。

虽然界面比较丑,但是可以看到我们还是可以实现对用户进行比较好的操作提示,下面介绍怎么实现这种效果。

集成环境

这个项目中,我采用的是TourGuide开源项目,可以直接进入GitHub地址进行学习与下载,这里我们只是简单的介绍怎么使用他来实现浮动界面的引导效果。首先是添加引用:
在你的gradle file中添加以下依赖,然后点击sync将依赖添加到自己的项目中就可以直接使用了。


repositories {
 MavenCentral()
 maven(){
  url "https://oss.sonatype.org/content/repositories/snapshots"
 }
}
compile ('com.github.worker8:tourguide:1.0.17-SNAPSHOT@aar'){
 transitive=true
}

最简单的使用.


Button button = (Button)findViewById(R.id.button);
TourGuide mTourGuideHandler = TourGuide.init(this).with(TourGuide.Technique.Click)
   .setPointer(new Pointer())
   .setToolTip(new ToolTip().setTitle("Welcome!").setDescription("Click on Get Started to begin..."))
   .setOverlay(new Overlay())
   .playOn(button);

通过这几行代码就可以实现对引导的效果。下面对其中的参数做一个简答的介绍:

* setPointer() -设置指示器,关于如何改变外观(效果图中那个提示用户去点击的白点),参考我后面的代码,如果不想要pointer,可以直接传入null。
* setToolTip - 设置提示的内容,关于如何改变其样式,参考我后面的代码,如果不想要tooltip,可以传入null。
* setOverlay - 设置覆盖层的样式,关于如果改变其样式,参考我后面的代码,如果不想要可以传入null。
* with -目前使用的是 TourGuide.Technique.Click ,以后可以能会去掉。
* mTourGuideHandler - 返回的handler类型,用户去掉提示信息。

自定义提示样式

自定义ToolTip样式,代码中的注释比较详细,应该可以看懂。


 Button button = (Button) findViewById(R.id.id_but);
  //设置文本的动画效果
  Animation animation = new TranslateAnimation(0f, 0f, 200f, 0f);//转化动画
  animation.setDuration(1000);//时间间隔
  animation.setFillAfter(true);//设置停留在动画完成后的位置
  animation.setInterpolator(new BounceInterpolator());//设置动画变化的速率
  ToolTip toolTip = new ToolTip()//设置文字提示的风格
    .setTitle("欢迎使用")//设置标题
    .setDescription("下面来介绍怎么使用把..")//设置内容提示
    .setTextColor(Color.parseColor("#bdc3c7"))//设置字体颜色
    .setBackgroundColor(Color.parseColor("#e74c3c"))//设置背景色
    .setShadow(true)//设置是否有阴影效果
    .setGravity(Gravity.CENTER)//设置相对于父布局位置
    .setEnterAnimation(animation);//设置动画效果
  mTourGuideHandler1 = TourGuide.init(this).with(TourGuide.Technique.Click)
    .setPointer(new Pointer())//提示指向的按钮
    .setToolTip(toolTip)//设置提示的内容
    .setOverlay(new Overlay())//设置覆盖效果
    .playOn(button);//设置绑定的控件
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    mTourGuideHandler1.cleanUp();//关闭引导界面
    initSecondeButton();
   }
  });

自定义overlay和pointer样式。


{
  Pointer pointer = new
    Pointer().setColor(Color.RED)//设置指示器的颜色
    .setGravity(Gravity.BOTTOM);//设置指示器对于父容器的位置
  Overlay overlay = new Overlay()
    .setBackgroundColor(Color.parseColor("#AAFF0000"))//设置覆盖层的颜色
    .disableClick(true)//设置不可以点击
    .setStyle(Overlay.Style.Rectangle);//设置覆盖的风格
  Button bu2 = (Button) findViewById(R.id.second_but);
   mTourGuideHandler2 = TourGuide.init(this).with(TourGuide.Technique.Click)
     .setPointer(pointer)
     .setToolTip(new ToolTip().setTitle("点击他").setDescription("我们继续往下走..."))
     .setOverlay(overlay)
     .playOn(bu2);
  bu2.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    mTourGuideHandler2.cleanUp();
   }
  });
 }

相信代码已经注释的比较清楚了。
最后,将整个项目的代码copy上来。


package students.userfloatdemo;
import Android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.BounceInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import tourguide.tourguide.Overlay;
import tourguide.tourguide.Pointer;
import tourguide.tourguide.ToolTip;
import tourguide.tourguide.TourGuide;
public class MainActivity extends AppCompatActivity {
 private TourGuide mTourGuideHandler1;
 private TourGuide mTourGuideHandler2;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initFisrtButton();
 }
 //第二个按钮的
 private void initSecondeButton() {
  Pointer pointer = new
    Pointer().setColor(Color.RED)//设置指示器的颜色
    .setGravity(Gravity.BOTTOM);//设置指示器对于父容器的位置
  Overlay overlay = new Overlay()
    .setBackgroundColor(Color.parseColor("#AAFF0000"))//设置覆盖层的颜色
    .disableClick(true)//设置不可以点击
    .setStyle(Overlay.Style.Rectangle);//设置覆盖的风格
  Button bu2 = (Button) findViewById(R.id.second_but);
   mTourGuideHandler2 = TourGuide.init(this).with(TourGuide.Technique.Click)
     .setPointer(pointer)
     .setToolTip(new ToolTip().setTitle("点击他").setDescription("我们继续往下走..."))
     .setOverlay(overlay)
     .playOn(bu2);
  bu2.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    mTourGuideHandler2.cleanUp();
   }
  });
 }
 private void initFisrtButton() {
  Button button = (Button) findViewById(R.id.id_but);
  //设置文本的动画效果
  Animation animation = new TranslateAnimation(0f, 0f, 200f, 0f);//转化动画
  animation.setDuration(1000);//时间间隔
  animation.setFillAfter(true);//设置停留在动画完成后的位置
  animation.setInterpolator(new BounceInterpolator());//设置动画变化的速率
  ToolTip toolTip = new ToolTip()//设置文字提示的风格
    .setTitle("欢迎使用")//设置标题
    .setDescription("下面来介绍怎么使用把..")//设置内容提示
    .setTextColor(Color.parseColor("#bdc3c7"))//设置字体颜色
    .setBackgroundColor(Color.parseColor("#e74c3c"))//设置背景色
    .setShadow(true)//设置是否有阴影效果
    .setGravity(Gravity.CENTER)//设置相对于父布局位置
    .setEnterAnimation(animation);//设置动画效果
  mTourGuideHandler1 = TourGuide.init(this).with(TourGuide.Technique.Click)
    .setPointer(new Pointer())//提示指向的按钮
    .setToolTip(toolTip)//设置提示的内容
    .setOverlay(new Overlay())//设置覆盖效果
    .playOn(button);//设置绑定的控件
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    mTourGuideHandler1.cleanUp();//关闭引导界面
    initSecondeButton();
   }
  });
 }
}

xml文件中的代码


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 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"
 android:orientation="vertical"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="students.userfloatdemo.MainActivity">
 <Button
  android:id="@+id/id_but"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="第一步"
 />
 <Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="第二步"
 android:id="@+id/second_but"/>
</LinearLayout>

最后的最后,奉上源码:https://github.com/Reoger/StartUITest

您可能感兴趣的文章:Android实现图片浮动随意拖拽效果Android 浮动编辑框的具体实现代码安卓(android)仿电商app商品详情页按钮浮动效果Android自定义ViewGroup实现标签浮动效果Android应用中制作选中后图标变大浮动效果的代码分享Android实现支付宝蚂蚁森林水滴浮动效果


--结束END--

本文标题: Android利用浮动窗口提示用户操作

本文链接: https://lsjlt.com/news/23426.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android利用浮动窗口提示用户操作
    上次我们实现了利用viewpager实现对新用户的功能性介绍,今天我们来显示利用浮动窗口对用户进行操作的引导。先看效果图。 虽然界面比较丑,但是可以看到我们还是可以实现对...
    99+
    2022-06-06
    Android
  • Win10命令提示符窗口全屏显示操作步骤
      在Win10之前的Windows系统,微软移除了命令提示符全屏的功能,最大只能占据大半个屏幕,但在最新的Win10 9879更新中,这个功能回归了,支持命令提示符窗口全屏显示,来看具体的操作步骤。   Win10命令...
    99+
    2023-06-09
    Win10 提示符 窗口 全屏 操作步骤 命令提示符
  • 多窗口下的批量操作脚本 - 利用win3
    环境:python 3.7.x 使用的模块:pyautogui, win32gui 使用的工具:WindowSpy++   背景:最近要用帮同学处理400+张图片的文字识别,考虑用python实现 [天若OCR] 的批处理,临时抱佛脚...
    99+
    2023-01-31
    批量 脚本 多窗口
  • Win8删除文件如何不提示确认操作的窗口
      从Windows操作系统的问世到现在,已经好几个版本了。无论是经典的Windows 98、Windows XP 或者是占据多数用户的Win7主流操作系统,都无一例外的对删除文件有一个交互的提示窗口,然而...
    99+
    2022-06-04
    窗口 提示 操作
  • Android应用内悬浮窗的实现方案示例
    1、悬浮窗的基本介绍悬浮窗,大家应该也不陌生,凌驾于应用之上的一个小弹窗,实现上很简单,就是添加一个系统级别的窗口,Android中通过WindowManagerService( WMS)来管理所有的窗口,对于WMS来说,管你是Activi...
    99+
    2023-05-30
    android
  • Android用户输入自动提示控件AutoCompleteTextView怎么用
    这篇文章给大家分享的是有关Android用户输入自动提示控件AutoCompleteTextView怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、简介AutoCompleteTextView的作用&nb...
    99+
    2023-05-30
    android autocompletetextview
  • 电脑出现用户界面失败提示窗口怎么解决
    本篇内容主要讲解“电脑出现用户界面失败提示窗口怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“电脑出现用户界面失败提示窗口怎么解决”吧!解决方法: 1.开机按F8键进入高级启动选...
    99+
    2023-06-28
  • Beam中的窗口操作怎么使用
    在Beam中,窗口操作可以用来对数据进行分组和聚合,常见的窗口操作包括滑动窗口、固定窗口和会话窗口等。要使用窗口操作,首先需要定义窗...
    99+
    2024-04-02
  • 利用spring AOP记录用户操作日志的方法示例
    前言最近项目已经开发完成,但发现需要加用户操作日志,如果返回去加也不太现实,所以使用springAOP来完成比较合适。下面来一起看看详细的介绍:注解工具类:@Retention(RetentionPolicy.RUNTIME)@Target...
    99+
    2023-05-31
    springaop 用户操作 日志记录
  • Java客户端利用Jedis操作redis缓存示例代码
    前言Redis是一个开源的Key-Value数据缓存,和Memcached类似。Redis多种类型的value,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型...
    99+
    2023-05-31
    java客户端 jedis redis缓存
  • js利用cookie实现记住用户页面操作
    前言 开发过程中,有时候会遇到一些类似需求,比如记住用户在浏览器层面所做的操作。之前做过一个功能,当时使用了一个拖拽插件展示一个类似九宫格的报表图,每个图形都可以显示和隐藏,如果用户...
    99+
    2024-04-02
  • layui如何实现button按钮弹出提示窗口并确定才进行操作
    这篇文章主要介绍了layui如何实现button按钮弹出提示窗口并确定才进行操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如下所示:&l...
    99+
    2024-04-02
  • Android实现用户头像更换操作
    你以为头像更换很容易?或许对于用户来讲,在微信上更换一个头像只是点击头像,选择拍照或相册,裁剪返回而已。但是对于程序员来说,要实现其实也挺吃力的(小火柴花了一个下午整理~_~)...
    99+
    2022-06-06
    Android
  • 怎么在java中利用default操作接口
    怎么在java中利用default操作接口?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基...
    99+
    2023-06-14
  • Android开发Flutter 桌面应用窗口化实战示例
    目录前言一、应用窗口的常规配置应用窗口化自定义窗口导航栏美化应用窗口二、windows平台特定交互注册表操作执行控制台指令实现应用单例三、桌面应用的交互习惯按钮点击态获取应用启动参数...
    99+
    2024-04-02
  • 如何使用phonegap进行提示操作
    这篇文章主要为大家展示了“如何使用phonegap进行提示操作”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用phonegap进行提示操作”这篇文章吧。常...
    99+
    2024-04-02
  • Android利用Intent实现读取图片操作
    本文实例演示如何从图库(Gallery)中读取图像并用ImageView将它显示出来,供大家参考,具体内容如下 运行本示例前,需要先利用相机模拟拍摄一些图片到图库中。 1、运行...
    99+
    2022-06-06
    图片 intent Android
  • Android中怎么利用LitePal操作数据库
    Android中怎么利用LitePal操作数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。把图片转换为字节private byte[]img(Bitmap&nbs...
    99+
    2023-05-30
    android litepal
  • win7系统取消用户账户控制(UAC)免受提示窗的打扰
    win7中的用户账户控制简称AU会提醒使用者注意一些程序正在更改windows设置,不过经常弹出提示窗有用户觉得这样很麻烦又受到打扰,那么如何关闭取消它呢?现在就跟大家分享一下win7系统取消用户账户控制的方法(图文)吧...
    99+
    2023-06-06
    win7 用户账户控制 UAC 用户 账户 系统 打扰
  • 怎么在Android中利用marker自定义一个弹框窗口
    怎么在Android中利用marker自定义一个弹框窗口?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android是什么Android是一种基于Linux内核的自由及开放源代...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作