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

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

使用Panel和TextLine模拟Android的Toast_第1张图片

下面是我制作的显示效果

使用Panel和TextLine模拟Android的Toast_第2张图片

看上图你就会知道,这个比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 Txt文本阅读器源码
  2. ActionBar的自定义样式
  3. android各种提示Dialog 弹出框
  4. Android 常用样式设置
  5. Android实现富文本编辑
  6. Android 如何修改默认的Tab样式

随机推荐

  1. Ashmem(Android共享内存)使用方法和原理
  2. Android中添加和识别手势操作
  3. Android(安卓)Glide4.2.0版本使用
  4. Android从入门到放弃——常见控件二
  5. android常用命令
  6. Android利用android:indeterminateDrawab
  7. android 录音 mediaRecorder
  8. android 之activity生命周期(转载)
  9. Android(安卓)ListView Adapter的getItem
  10. Android(安卓)ListView Adapter的getItem