2011-02-15 102 views
0

我想在android上創建一個汽車儀表板。其實我已經創建了這個應用程序。但是這是基於動畫的,它工作的很好。現在,我想要添加兩個按鈕(向上和向下)。當我點擊時,手必須向上移動10度。再次點擊按鈕意味着手必須從當前位置向上移動10度,並且當我點擊時意味着它必須下降10度。我不能做這個動畫中的一個按鈕。我想要創建更多的按鈕和每個按鈕,我想創建不同的動畫。這非常複雜。請有人幫助我做到這一點。在這裏我添加我的代碼如何在Android中不使用動畫來回旋轉圖像

 import android.app.Activity; 
    import android.graphics.Bitmap; 
    import android.graphics.BitmapFactory; 
    import android.graphics.Matrix; 
    import android.graphics.drawable.BitmapDrawable; 
    import android.os.Bundle; 
    import android.view.MotionEvent; 
    import android.view.View; 
    import android.view.animation.AccelerateInterpolator; 
    import android.view.animation.Animation; 
    import android.view.animation.AnimationUtils; 
    import android.widget.Button; 
    import android.widget.ImageView; 

    public class dash1 extends Activity { 
     ImageView img,img1; 
    Animation an,an1,an2,an3;Button bt,bt2,bt3,bt4; 
     /** Called when the activity is first created. */ 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    img = (ImageView)findViewById(R.id.ImageView01); 
    final Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.minute); 
    final int w= bmp.getWidth(); 
    final int h= bmp.getHeight(); 
    final Matrix mat = new Matrix(); 
    mat.postRotate(180); 
    Bitmap rtd = Bitmap.createBitmap(bmp, 0, 0, w, h, mat, true); 
    BitmapDrawable bmd = new BitmapDrawable(rtd); 
    img.setImageDrawable(bmd); 
    an = AnimationUtils.loadAnimation(this, R.anim.anim); 
    an1 = AnimationUtils.loadAnimation(this, R.anim.anim1); 
    an2 = AnimationUtils.loadAnimation(this, R.anim.anim2); 
    an3 = AnimationUtils.loadAnimation(this, R.anim.anim3); 
    bt = (Button)findViewById(R.id.Button01); 
    bt2 = (Button)findViewById(R.id.Button02); 
    bt3 = (Button)findViewById(R.id.Button03); 
    bt4 = (Button)findViewById(R.id.Button04);  

      bt.setOnTouchListener(new View.OnTouchListener() { 

       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        // TODO Auto-generated method stub 
        an.setFillAfter(true); 
        img.startAnimation(an); 


        return false; 
       } 
      }); 
      bt2.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        img.startAnimation(an1); 
       } 
      }); 
      bt3.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        an2.setFillAfter(true); 
        img.startAnimation(an2); 

       } 
      }); 
      bt4.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        an3.setFillAfter(true); 
        img.startAnimation(an3); 
       } 
      }); 
} 


} 
+1

請再具體些。你想看一個動畫,但你想不使用動畫api完成,或者你只是想顯示一個圖像旋轉一次x度? – WarrenFaith 2011-02-15 11:16:17

回答

0

你基本上有你需要的一切。您只需將矩陣上的旋轉角度改變10度,然後將其應用於用於ImageView的圖像。正如你已經用旋轉180度的圖像,你應該熟悉你需要再次旋轉10度是什麼?

示例代碼:

public boolean onTouch(View v, MotionEvent event) { 
    mat.postRotate(10); // or -10 degree 
    Bitmap rtd = Bitmap.createBitmap(bmp, 0, 0, w, h, mat, true); 
    BitmapDrawable bmd = new BitmapDrawable(rtd); 
    img.setImageDrawable(bmd); 
} 
+0

當我使用我們不能看到運動。然後,爲什麼我在這裏使用此代碼意味着原始手形圖顯示方向up.This圖像我放在另一個儀表板量規圖像。在那裏閱讀從下往上。這就是爲什麼我使用該代碼保持手圖像的起始位置... – khan 2011-02-15 12:41:27