2012-03-03 12 views
0

私のアプリにスプライトアニメーションがあり、標準の電話機サイズの画面でうまくいきますが、タブレットに置くたびにアニメーションがうまく動きません。画像の高さと幅に関係していると思います。私はdpとspとしてそれらを設定しようとしましたが、彼らはまだタブレット上でレンダリングされません。ここでアンドロイドタブレットでスプライト画像のレンダリングが正しく行われない

は私のアニメーションXMLは、私はそれを初期化

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:paddingLeft="100dp" > 

    <view 
     android:id="@+id/animation" 
     android:layout_width="180dp" 
     android:layout_height="220dp" 
     class="com.scale.AndroidAnimation" /> 
</LinearLayout> 

ここに私のアニメーションコードだ

public class AndroidAnimation extends View{ 
    private Bitmap mAnimation; 
    private Rect mSRectangle; 
    private int mNoOfFrames; 
    private int mCurrentFrame; 
    private int mSpriteHeight; 
    private int mSpriteWidth; 

    public AndroidAnimation(Context context, AttributeSet aSet) { 
     super(context, aSet);   
     mSRectangle = new Rect(0,0,0,0); 
     mCurrentFrame = 0; 
    } 

    public void init(Bitmap theBitmap, int Height, int Width, int theFrameCount) { 
     mAnimation = theBitmap; 
     mSpriteHeight = Height; 
     mSpriteWidth = Width; 
     mSRectangle.top = 0; 
     mSRectangle.bottom = mSpriteHeight; 
     mSRectangle.left = 0; 
     mSRectangle.right = mSpriteWidth; 
     mNoOfFrames = theFrameCount; 
     mCurrentFrame = 0; 
    } 

    public void update() { 
     mCurrentFrame++; 
     mCurrentFrame %= mNoOfFrames; 
     mSRectangle.left = mCurrentFrame * mSpriteWidth; 
     mSRectangle.right = mSRectangle.left + mSpriteWidth;  
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     Rect dest = new Rect(0, 0, mSpriteWidth, mSpriteHeight); 
     canvas.drawBitmap(mAnimation, mSRectangle, dest, null); 
    } 
} 

anim = (AndroidAnimation) findViewById(R.id.animation); 
anim.init(BitmapFactory.decodeResource(getResources(), R.drawable.connecting_sprite), 300, 170, 3); 
mHandler.removeCallbacks(myTimerTask); 
mHandler.postDelayed(myTimerTask, 300); 

それを

public void run() { 
    mHandler.removeCallbacks(myTimerTask); 

    if (mCurrScreen == WAITING_SCREEN) { 
     mHandler.postDelayed(myTimerTask, 300); 
    } 

    anim.update(); 
    anim.invalidate(); 
} 
を進行マイハンドラです

ありがとうございます!

答えて

0

タブレット用に別々のレイアウトを設計することは良い方法です。resにlayout-xlargeフォルダを作成し、タブレット用に最適化された新しいレイアウトanimation.xmlファイルを作成してください。

関連する問題