Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 黑莓-场布局动画_User Interface_Blackberry_Animation_Custom Controls - Fatal编程技术网

User interface 黑莓-场布局动画

User interface 黑莓-场布局动画,user-interface,blackberry,animation,custom-controls,User Interface,Blackberry,Animation,Custom Controls,在一个字段(位图字段或屏幕)中很容易显示一些动画: [黑莓-背景图像/动画RIM OS 4.5.0][1] 但是,如果您需要移动字段,而不仅仅是图像,该怎么办 可用于: 游戏工作流功能,如国际象棋、拼图等 应用程序用户定义的布局,如在Google gadgets中 增强的GUI动画效果 因此,我想在这项任务中交换我的到期日,另一方面,我想知道其他任何可能性和建议。通过自定义布局可以轻松实现此效果: class AnimatedManager extends Manager { int

在一个字段(位图字段或屏幕)中很容易显示一些动画:
[黑莓-背景图像/动画RIM OS 4.5.0][1]

但是,如果您需要移动字段,而不仅仅是图像,该怎么办

可用于:

  • 游戏工作流功能,如国际象棋、拼图等
  • 应用程序用户定义的布局,如在Google gadgets中
  • 增强的GUI动画效果

因此,我想在这项任务中交换我的到期日,另一方面,我想知道其他任何可能性和建议。

通过自定义布局可以轻松实现此效果:

class AnimatedManager extends Manager {
    int ANIMATION_NONE = 0;
    int ANIMATION_CROSS_FLY = 1;
    boolean mAnimationStart = false;
    Bitmap mBmpBNormal = Bitmap.getBitmapResource("blue_normal.png");
    Bitmap mBmpBFocused = Bitmap.getBitmapResource("blue_focused.png");
    Bitmap mBmpRNormal = Bitmap.getBitmapResource("red_normal.png");
    Bitmap mBmpRFocused = Bitmap.getBitmapResource("red_focused.png");
    Bitmap mBmpYNormal = Bitmap.getBitmapResource("yellow_normal.png");
    Bitmap mBmpYFocused = Bitmap.getBitmapResource("yellow_focused.png");
    Bitmap mBmpGNormal = Bitmap.getBitmapResource("green_normal.png");
    Bitmap mBmpGFocused = Bitmap.getBitmapResource("green_focused.png");
    int[] width = null;
    int[] height = null;
    int[] xPos = null;
    int[] yPos = null;
    BitmapButtonField mBButton = new BitmapButtonField(mBmpBNormal,
            mBmpBFocused);
    BitmapButtonField mRButton = new BitmapButtonField(mBmpRNormal,
            mBmpRFocused);
    BitmapButtonField mYButton = new BitmapButtonField(mBmpYNormal,
            mBmpYFocused);
    BitmapButtonField mGButton = new BitmapButtonField(mBmpGNormal,
            mBmpGFocused);

    public AnimatedManager() {
        super(USE_ALL_HEIGHT | USE_ALL_WIDTH);
        add(mBButton);
        add(mRButton);
        add(mYButton);
        add(mGButton);
        width = new int[] { mBButton.getPreferredWidth(),
                mRButton.getPreferredWidth(), 
                mYButton.getPreferredWidth(),
                mGButton.getPreferredWidth() };

        height = new int[] { mBButton.getPreferredHeight(),
                mRButton.getPreferredHeight(),
                mYButton.getPreferredHeight(),
                mGButton.getPreferredHeight() };

        xPos = new int[] { 0, getPreferredWidth() - width[1], 0,
                getPreferredWidth() - width[3] };
        yPos = new int[] { 0, 0, getPreferredHeight() - height[2],
                getPreferredHeight() - height[3] };

        Timer timer = new Timer();
        timer.schedule(mAnimationTask, 0, 100);
    }

    TimerTask mAnimationTask = new TimerTask() {
        public void run() {
            UiApplication.getUiApplication().invokeLater(new Runnable() {
                public void run() {
                    updateLayout();
                };
            });
        };
    };

    MenuItem mAnimationMenuItem = new MenuItem("Start", 0, 0) {
        public void run() {
            mAnimationStart = true;
        };
    };

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

    public int getPreferredHeight() {
        return Display.getHeight();
    }

    public int getPreferredWidth() {
        return Display.getWidth();
    }

    protected void sublayout(int width, int height) {
        width = getPreferredWidth();
        height = getPreferredHeight();

        if (getFieldCount() > 3) {
            Field first = getField(0);
            Field second = getField(1);
            Field third = getField(2);
            Field fourth = getField(3);

            layoutChild(first, this.width[0], this.height[0]);
            layoutChild(second, this.width[1], this.height[1]);
            layoutChild(third, this.width[2], this.height[2]);
            layoutChild(fourth, this.width[3], this.height[3]);

            if (mAnimationStart) {
                boolean anim1 = performLayoutAnimation(0,
                        width - this.width[0], 
                        height - this.height[0]);
                boolean anim2 = performLayoutAnimation(1, 0, 
                        height - this.height[1]);
                boolean anim3 = performLayoutAnimation(2,
                        width - this.width[2], 0);
                boolean anim4 = performLayoutAnimation(3, 0, 0);
                mAnimationStart = anim1 || anim2 || anim3 || anim4;
            }
            setPositionChild(first, xPos[0], yPos[0]);
            setPositionChild(second, xPos[1], yPos[1]);
            setPositionChild(third, xPos[2], yPos[2]);
            setPositionChild(fourth, xPos[3], yPos[3]);

        }

        setExtent(width, height);
    }

    boolean performLayoutAnimation(int fieldIndex, int x, int y) {

        boolean result = false;
        if (xPos[fieldIndex] > x) {
            xPos[fieldIndex] -= 2;
            result = true;
        } else if (xPos[fieldIndex] < x) {
            xPos[fieldIndex] += 2;
            result = true;
        }

        if (yPos[fieldIndex] > y) {
            yPos[fieldIndex] -= 1;
            result = true;
        } else if (yPos[fieldIndex] < y) {
            yPos[fieldIndex] += 1;
            result = true;
        }
        return result;
    }
}

我不得不从你的帖子中删除这些图片,因为ImageShack已经删除了它们,并用广告代替了它们。有关更多信息,请参阅。如果可能的话,你最好重新上传。谢谢
class BitmapButtonField extends ButtonField {
    Bitmap mNormal;
    Bitmap mFocused;

    int mWidth;
    int mHeight;

    public BitmapButtonField(Bitmap normal, Bitmap focused) {
        super(CONSUME_CLICK);
        mNormal = normal;
        mFocused = focused;
        mWidth = mNormal.getWidth();
        mHeight = mNormal.getHeight();
        setMargin(0, 0, 0, 0);
        setPadding(0, 0, 0, 0);
        setBorder(BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
        setBorder(VISUAL_STATE_ACTIVE, BorderFactory
                .createSimpleBorder(new XYEdges(0, 0, 0, 0)));
    }

    protected void paint(Graphics graphics) {
        Bitmap bitmap = null;
        switch (getVisualState()) {
        case VISUAL_STATE_NORMAL:
            bitmap = mNormal;
            break;
        case VISUAL_STATE_FOCUS:
            bitmap = mFocused;
            break;
        case VISUAL_STATE_ACTIVE:
            bitmap = mFocused;
            break;
        default:
            bitmap = mNormal;
        }
        graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(),
                bitmap, 0, 0);
    }

    public int getPreferredWidth() {
        return mWidth;
    }

    public int getPreferredHeight() {
        return mHeight;
    }

    protected void layout(int width, int height) {
        setExtent(mWidth, mHeight);
    }

    protected void applyTheme(Graphics arg0, boolean arg1) {

    }
}