2011-09-02 82 views

回答

0

還沒有真正做到。但我認爲這裏最大的困難是滑動動畫部分和可見度恕我直言。您應該首先處理滑動效果的動畫。然後在經理本身。

觸摸設備有另一個難點...你必須編程滑塊觸摸事件,以便它跟隨手勢。

0

嘿它真的有一個絕妙的想法,有這樣的黑莓佈局。完成它是相當具有挑戰性的。我們必須玩自定義佈局。 首先需要的是管理者定製的知識。我相信我們也可以使用彈出式屏幕將其向上滑動。經理在彈出屏幕上。其次,側面滾動的Gusture api。 所有最好的朋友。

0

請檢查下面我創建一個經理類的源代碼。只需將想要滑動的任何內容添加到該經理並使用它即可。根據您的要求更改。

package mypackage; 

import net.rim.device.api.ui.Graphics; 
import net.rim.device.api.ui.Manager; 
import net.rim.device.api.ui.TouchEvent; 
import net.rim.device.api.ui.component.Dialog; 
import net.rim.device.api.ui.component.LabelField; 

public class SlidingDrawer extends Manager { 
    final static int STATE_VIEW = 1; 
    final static int STATE_HIDE = STATE_VIEW+1; 
    final static int STATE_SLIDE_DOWN = STATE_HIDE+1; 
    final static int STATE_SLIDE_UP = STATE_SLIDE_DOWN+1; 
    final static int MAX_NO_OF_STATES = STATE_SLIDE_UP+1; 
    static int CURRENT_STATE = STATE_VIEW; 
    int i = 0; 
    LabelField _lbl_hero; 

    public SlidingDrawer(long arg0) { 
    super(arg0); 
     // TODO Auto-generated constructor stub 
     init(); 
    } 

    private void init() 
    { 
     _lbl_hero = new LabelField("Hero testing Every thign...."); 
     this.add(_lbl_hero); 
    } 

    protected void paint(Graphics graphics) { 
     // TODO Auto-generated method stub 
     switch(CURRENT_STATE) 
     { 
      case STATE_VIEW: 
       super.paint(graphics); 
       break; 
      case STATE_HIDE: 

       break; 
      case STATE_SLIDE_DOWN: 
       super.paint(graphics); 
       if(i<this.getHeight()) 
       { 
        this.getField(0).setPadding(i++, 0, 0, 0); 
        invalidate(); 
       } 
       else 
       { 
        CURRENT_STATE = STATE_HIDE; 
       } 
       break; 
      case STATE_SLIDE_UP: 
       super.paint(graphics); 
       if(i > 0) 
       { 
        this.getField(0).setPadding(i--, 0, 0, 0); 
        invalidate(); 
       } 
       else 
       { 
        CURRENT_STATE = STATE_VIEW; 
       } 
       break; 
     } 
    } 
    public void setState(int state) 
    { 
     if(state < MAX_NO_OF_STATES) 
     { 
      CURRENT_STATE = state; 
     } 
     else 
      Dialog.alert("Invalid State...."); 
    } 
    protected boolean touchEvent(TouchEvent message) { 
     // TODO Auto-generated method stub 
     if(CURRENT_STATE == STATE_VIEW) 
     { 
      i=0; 
      CURRENT_STATE = STATE_SLIDE_DOWN; 
      invalidate(); 
     } 
     else if(CURRENT_STATE == STATE_HIDE) 
     { 
//   i = this.getField(0).getContentRect().y; 
      CURRENT_STATE = STATE_SLIDE_UP; 
      invalidate(); 
     } 
     return super.touchEvent(message); 
    } 
    protected void sublayout(int maxWidth, int maxHeight) { 
     // TODO Auto-generated method stub 
     setExtent(360, 100);//Width and Height of the Childs 
    } 
} 

根據您的要求,請把這個代碼,並使用它。