2011-01-19 13 views
0

すべてのAndroid携帯、すべての解像度、すべての画面密度で画面全体を塗りつぶす矩形を描画したいと思います。すべて... :) 最初から私が理解しているものCanvas。 drawRectはピクセル内の寸法値として使用します。これが正しいことを願っています。 は、Androidに新しいビーイング私は単純に、このように書いた場合、この時点で1024×1024ピクセルよりも高い解像度とはAndroidデバイスが存在しないので、それは、十分になることを考えた:複数の画面解像度、密度で画面全体を塗りつぶし

ScreenWidth = 1024; 
ScreenHeight = 1024; 
canvas.drawRect(0,0, ScreenWidth, ScreenHeight, mLoadPaint); 

しかし、それはいくつかのデバイス上でそのようですこのRectangleは画面全体を満たしません。奇妙なことに、私は自分自身を説明することはできませんが、これはいつも起こっているのではなく、ある時点で... とにかくコードに問題があるようですので、そのように見えるように変更したいと思いますこの、それmetrics.widthPixelsとmetrics.heightPixelsは私の問題を解決します今すぐ確認してください。

wm = (WindowManager) getSystemService(WINDOW_SERVICE); 
DisplayMetrics metrics = new DisplayMetrics(); 
wm.getDefaultDisplay().getMetrics(metrics); 
canvas.drawRect(0,0, metrics.widthPixels, metrics.heightPixels, mLoadPaint); 

私はこれが正しいかどうかを知りたい、とコードのこの作品は、すべての画面をカバーする、と矩形が入力されます場合は画面全体。 もちろん、このアプローチでは、スクリーンがLandscapeにあるときに値が入れ替わるように見えるので、画面の向きも注意する必要があります。

+0

奇妙なことに、何が*長方形に入っていますか?あなたの2番目のオプション(メトリックを使う)はうまくいくはずです。drawRectメソッドがオリエンテーションが変更されたときに呼び出される限り(例えばonCreate())、スワップされた値について心配する必要はありません。 。 – kcoppock

+0

フィルタ、明るさフィルタなので、ユーザの操作... :)矩形はonCreateのサービス(サービス)を描画するので、私は心配する必要がありますが、サービスの存続期間中いつでも方向が変わる可能性があります。私はすでにこれを実装してエミュレータと携帯電話で動作しますが、1024x1024はエミュレータと携帯電話でも動作しました。:) – Alex

+0

UIを持っている場合は、アクティビティに参加する必要があります。オリエンテーションが変更されたときにアクティビティが破棄され、再構築されます(例:onCreate()など)。 – kcoppock

答えて

0

canvas.drawColor(int color)を試すことができます