前面讲的都是一些理论的东西,解释了下部分SG2D的API。这篇文章将使用前面的知识做一个小功能——模拟Android的Toast。

我先解释一下Android的Toast,做过Android的应该都了解这个东西,一个很方便的消息提示栏。没做过Android但用过的看完下面这张图你就知道我说的是什么了

下面是我制作的显示效果

看上图你就会知道,这个比Android的Toast的样式更多。这个东西我用了一个Panel做背景,用了一个TextLine来展示文本。

我定义了如下4种样式

        /** 展示样式枚举 */        enum TOAST_STYLE        {            /**模拟Android默认黑灰色Toast*/            ANDROID_DEFAULT,            /**模拟Android白色Toast*/            ANDROID_LIGHT,            /**模拟iOS提示样式*/            iOS,            /**模拟格斗江湖向上移动并变透明样式*/            TDZM        };

样式多并不代表使用就会复杂,其使用方法和Android的Toast一样简单。使用我的Toast展示上图三条消息的代码要多少呢?40行。

    GeequlimExtends::stage = pStage;    (new Toast("格斗江湖样式",10,Toast::TDZM) )->show();    (new Toast("iOS提示样式",30,Toast::iOS) )->show();    (new Toast("Android Toast样式",30) )->show();

Toast类构造函数的三个参数为:提示文本、展示时间、展示样式

Toast调用show方法后会将Toast对象添加到舞台的顶层呈现,在展示时间到后移除舞台并自动调用release()方法。

在使用Toast前需要定义GeequlimExtends::stage舞台对象。

好了,知道了作用和用法,下面就给出Toast的实现代码

 1 #ifndef __TOAST_H__ 2 #define __TOAST_H__ 3 #include "sg2d/../ui/container/Panel.h" 4  5 namespace GeequlimExtends 6 { 7     extern Stage* stage; 8 } 9 namespace GeequlimComponents10 {11     /**模拟Android Toast的消息提示框12     * ★调用 show()方法来显示Toast对象在舞台最顶层13     * ★show()调用后会自动调用release()14     */15     class Toast : public SG2DUI::Panel16     {17     public:18         /**展示时间枚举*/19         enum TOAST_DURATION20         {21             INSTANT=2,22             SHORT=5,23             LONG=10,24             MORE_LONG=1525         };26         /** 展示样式枚举 */27         enum TOAST_STYLE28         {29             /**模拟Android默认黑灰色Toast*/30             ANDROID_DEFAULT,31             /**模拟Android白色Toast*/32             ANDROID_LIGHT,33             /**模拟iOS提示样式*/34             iOS,35             /**模拟格斗江湖向上移动*/36             TDZM37         };38         Toast(void);39         /** 创建一个Toast对象40         * text 提示文本41         * duration 提示时间,单位为秒,默认为Toast::TOAST_DURATION的SHORT(5秒)42         * style 主题样式,Toast::TOAST_STYLE枚举,默认为Android黑43         */44         Toast(const char* text , float duration=SHORT ,TOAST_STYLE style=ANDROID_DEFAULT );45         virtual ~Toast(void);46         47         /**设置样式属性*/48         inline void setStyle(TOAST_STYLE style ){m_style = style;};49         /**获取样式属性*/50         inline TOAST_STYLE getStyle()const{return m_style;} 51 52         /**获取字体样式,直接作用于显示文本*/53         inline SG2D::FontDescription* getFontDescription()const{ return m_textLine; } ;54         /**设置字体样式*/55         void setFont(SG2D::FontDescription* fontDscrpt);56 57         /**获取提示文本*/58         const String getText()const;59         /**设置提示文本*/60         void setText(const char* text);61 62         /**获取显示时间长度*/63         inline const  float getDuration()const{ return m_duration; }64         /**设置显示时间长度*/65         inline void setDuration( float duration  ){ m_duration=duration;}66 67         /**显示Toast提示框68         *★调用show方法会自动调用release()69         */70         void show();71     protected:72         SG2DUI::TextLine* m_textLine;73         SG2D::ScaleBounds* m_pScaleBounds;74         float m_duration;75         TOAST_STYLE m_style;76         bool boFontWasModified;77         void updateAppearence();78     private:79         typedef    Panel super;80         81         void hide(void* param, unsigned int twice);82     };83 };84 #endif

。。。。。。。。。。。。。。。实现代码懒得贴了

。。。。。。。。。。。。。。。。。。。。。。。。。。。。我把代码和用到的图片资源传网盘了,需要的下载来看一下吧。

点击下载源码和所需资源

更多相关文章

  1. android Theme
  2. Momo自定义DialogFragment
  3. Android(安卓)基本控件
  4. Android手势滑动Tab
  5. android中的heap是修改
  6. 使用命令行创建Android模拟器
  7. Android自定义对话框(Dialog)
  8. Android(安卓)入门 和 环境搭建
  9. 【Android】Android(安卓)UI 开发_问答_2

随机推荐

  1. Android(安卓)插件化 动态升级
  2. Android中WebView加载本地Html,与JavaScri
  3. 作为一个刚刚入职Android开发的应届生,该
  4. 深入Android(安卓)【一】 —— 序及开篇
  5. NDK版本与Android固件要求对应表
  6. Android系统发展历程:1.0到4.0及代表机型
  7. 新书内容连载(3):Android(安卓)SDK中常用命
  8. 深入探讨 Android(安卓)传感器
  9. Android(安卓)的Camera架构介绍
  10. 真正的机器人操作系统---Android