黑莓手机 - 显示输入模式指示编程 [英] BlackBerry - Show typing mode indicator programmatically

查看:157
本文介绍了黑莓手机 - 显示输入模式指示编程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

结果
你知道一些方式来展现programmaticaly不同的<一个href=\"http://docs.blackberry.com/en/developers/deliverables/6625/Typing_indicators_2_3_810687_11.jsp\"相对=nofollow>输入的指标在屏幕上?结果
我知道我可以简单地划位图,但我想任何RIM OS版本做普遍。结果
此外,还有一个<一href=\"http://www.blackberry.net/developers/docs/4.2.1api/net/rim/device/api/ui/Keypad.html#setMode%28int%29\"相对=nofollow> setMode(INT)4.2.1 功能,但在4.3,它已经取消precated ...


Do you know some way to programmaticaly show different typing indicators on the screen?
I know I can simply draw bitmap but I'd like to do it universally for any RIM OS version.
Also, there is a setMode(int) function in 4.2.1 but in 4.3 it's already deprecated...

任何建议会有所帮助,谢谢!

Any suggestions will be helpful, thanks!

推荐答案

因为没有替代品,我做了的提供的图像的:

since there is no alternatives, I made a sample with provided images:


自定义标题Field类code:

custom Title Field class code:

class TITitleField extends Field implements DrawStyle {
    static final boolean mIsDimTheme = Integer.parseInt(DeviceInfo
            .getDeviceName().substring(0, 4)) < 8900;
    static final Bitmap ALT = Bitmap.getBitmapResource(mIsDimTheme ? 
            "typ_ind_alt_mode_Gen_Zen_328560_11.jpg" : 
            "typ_ind_alt_mode_Precsn_Zen_392908_11.jpg");
    static final Bitmap MULTITAP = Bitmap.getBitmapResource(mIsDimTheme ?
    "typ_ind_mltap_mode_Gen_Zen_328975_11.jpg" : 
    "typ_ind_mutlitap_mode_Precsn_Zen_452907_11.jpg");
    static final Bitmap NUMLOCK = Bitmap
        .getBitmapResource(mIsDimTheme ? 
            "typ_ind_num_lock_Gen_Zen_328568_11.jpg" : 
            "typ_ind_num_lock_Precsn_Zen_392925_11.jpg");
    static final Bitmap SHIFT = Bitmap.getBitmapResource(mIsDimTheme ? 
            "typ_ind_shift_mode_Gen_Zen_328574_11.jpg" : 
            "typ_ind_shift_mode_Precsn_Zen_392931_11.jpg");

    public static final int MODE_NONE = 0;
    public static final int MODE_ALT = 1;
    public static final int MODE_MULTITAP = 2;
    public static final int MODE_NUMLOCK = 3;
    public static final int MODE_SHIFT = 4;

    public void setTypingIndicatorMode(int mode) {
        mMode = mode;
        updateLayout();
    }

    public int getTypingIndicatorMode()
    {
        return mMode;       
    }

    int mWidth = 0;
    int mMode = 0;
    String mTitle = "";
    XYRect mIndicatorDestRect = new XYRect();

    public TITitleField() {
        this("");
    }

    public TITitleField(String title) {
        mTitle = title;
    }

    protected void paint(Graphics graphics) {
        graphics.drawText(mTitle, 0, 0, LEFT | ELLIPSIS, mWidth);
        if (0 != mMode) {
            graphics.drawBitmap(mIndicatorDestRect,getIndicator(mMode),0,0);
        }
    }

    private static Bitmap getIndicator(int mode) {
        Bitmap result = null;
        switch (mode) {
        case MODE_ALT:
            result = ALT;
            break;
        case MODE_MULTITAP:
            result = MULTITAP;
            break;
        case MODE_NUMLOCK:
            result = NUMLOCK;
            break;
        case MODE_SHIFT:
            result = SHIFT;
            break;
        case MODE_NONE:
            break;
        default:
            break;
        }
        return result;
    }

    protected void layout(int width, int height) {
        mWidth = width;
        if (0 != mMode) {
            Bitmap indicator = getIndicator(mMode);
            mIndicatorDestRect.width = indicator.getWidth();
            mIndicatorDestRect.height = indicator.getHeight();
            mIndicatorDestRect.y = 0;
            mIndicatorDestRect.x = mWidth - mIndicatorDestRect.width;
        }
        setExtent(width, getPreferredHeight());
    }

    public int getPreferredHeight() {
        int height = getFont().getHeight() + 4;
        if (0 != mMode) {
            int indicatorHeight = getIndicator(mMode).getHeight();
            height = Math.max(height, indicatorHeight);
        }
        return height;
    }
}

使用code样品:<​​/ P>

Sample of use code:

class Scr extends MainScreen {
    static final TITitleField mTitle = new TITitleField("Start");

    public Scr() {
        this.setTitle(mTitle);
    }

    protected void makeMenu(Menu menu, int instance) {
        super.makeMenu(menu, instance);

        int typingIndicatorMode = mTitle.getTypingIndicatorMode();

        if(typingIndicatorMode != mTitle.MODE_NONE)
        menu.add(new MenuItem("None Mode", 0, 0) {
            public void run() {
                mTitle.setTypingIndicatorMode(mTitle.MODE_NONE);
            }
        });

        if(typingIndicatorMode != mTitle.MODE_ALT)
        menu.add(new MenuItem("Alt Mode", 0, 0) {
            public void run() {
                mTitle.setTypingIndicatorMode(mTitle.MODE_ALT);
            }
        });

        if(typingIndicatorMode != mTitle.MODE_MULTITAP)
        menu.add(new MenuItem("Multitap Mode", 0, 0) {
            public void run() {
                mTitle.setTypingIndicatorMode(mTitle.MODE_MULTITAP);
            }
        });

        if(typingIndicatorMode != mTitle.MODE_NUMLOCK)
        menu.add(new MenuItem("NumLock Mode", 0, 0) {
            public void run() {
                mTitle.setTypingIndicatorMode(mTitle.MODE_NUMLOCK);
            }
        });

        if(typingIndicatorMode != mTitle.MODE_SHIFT)
        menu.add(new MenuItem("Shift Mode", 0, 0) {
            public void run() {
                mTitle.setTypingIndicatorMode(mTitle.MODE_SHIFT);
            }
        });
    }
}

这篇关于黑莓手机 - 显示输入模式指示编程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆