6

グラデーションのある背景には、次のようなドローアブルを使用しています。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
        android:startColor="#ffffff"
        android:endColor="#cccccc"
        android:angle="-90"
        android:dither="true" />
</shape>

これにより、エミュレーターにバンド付きのグラデーションが発生し、(Eclipse を使用して) エミュレーターのスクリーンショットを撮ると、結果はさらに悪くなります。

ここに画像の説明を入力

なんで?そして、この問題を解決するにはどうすればよいですか?それは私がandroid:dither="true"drawablesのXMLで使用していて、これをActivity'sで設定していますがonCreate()

    getWindow().setFormat(PixelFormat.RGBA_8888);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

ちなみに、青い部分がネイティブのアクションバーで、グレーのグラデーションがListView背景のドローアブルのある行です。

4

4 に答える 4

8

この質問を読んだすべての人に解決策が表示されるようにするためだけに、次のようにします。

davehale23とChrisStrattonが指摘したように、問題はEclipseやアプリが「撮影」されていることではありません問題はAndroidエミュレーターであり、明らかにビット深度を減らしています。

したがって、アプリのスクリーンショットを撮る場合は、常に実際のデバイスを使用する必要があります。

于 2012-12-03T14:58:44.237 に答える
5

@Marco W. が上記で述べたように、この問題は Android Eclipse エミュレーターに直接関係しています。

したがって、Eclipse SDK の新しいバージョンでは、画質を向上させる (およびエミュレーターのパフォーマンスを向上させる) ための解決策は、Android デバイス マネージャーのエミュレーション オプションで [ホスト GPU を使用] を有効にすることです。

既存の AVD に対してこれをオンにするには:

  • GPU エミュレーションを有効にする AVD 名を選択します
  • 「編集」をクリック
  • [エミュレーション オプション] セクションで [ホスト GPU を使用] をオンにします。
  • [OK] をクリックして、AVD 構成の変更を保存します。

または、新しい AVD を作成するときに、このオプションをオンにするだけです。

于 2013-06-18T10:11:59.063 に答える
1

上記の私のコメントをさらに進めて、このようなことを試してみてください.グラデーションがどのように見えるかに気づいていませんが、私は通常、これからかなり良い品質を得る. DRAWING_CACHE_QUALITY_HIGH が役立つかもしれませんが、わかりません。

void getScreenCap(View yourView) {
    yourView.setDrawingCacheEnabled(true);
    yourView.setDrawingCacheQuality(LinearLayout.DRAWING_CACHE_QUALITY_HIGH);
    yourView.buildDrawingCache();
    Bitmap bmp = null;
    if (yourView != null) { 
        try {
            bmp = Bitmap.createBitmap(yourView.getDrawingCache());
        } catch (NullPointerException e) { }
    }
    yourView.setDrawingCacheEnabled(false);
    yourView.destroyDrawingCache();

    if (bmp != null) {
        String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
        File dir = new File(file_path);
        if (!dir.exists()) { 
            dir.mkdirs();
        }
        File file = new File(dir, "screencap.png");
        FileOutputStream fOut = null;
        try { fOut = new FileOutputStream(file); } catch (FileNotFoundException e1) { }
        bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut);
        try { fOut.flush(); fOut.close(); } catch (IOException e1) { }
    }
}

これがコンパイルされるかどうかはわかりませんが、アプリのスクリーン キャップを取得するために必要なものが含まれています。

AVD には SDCARD が必要で、マニフェストには以下も必要です。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
于 2012-12-02T07:01:24.327 に答える
0

スクリーンショットのビット深度の問題は2者の責任だと思います。Android DDMS /モニター、およびキャプチャされているデバイス/エミュレーター。

デバイス/エミュレーターのビット深度表示が低い場合、その特定の状況(GIGO)については何もしません。一部のデバイス/エミュレーターでは、DDMSが取得する画面キャプチャーの品質が実際のディスプレイよりも低いことがはっきりとわかりました。

私の狩りで、私はあなたがここで得ることができる「Androidスクリーンモニター」と呼ばれるこの問題を解決すると思うアプリケーションをちょう​​ど見つけました:

http://code.google.com/p/android-screen-monitor/

于 2013-01-27T18:45:04.177 に答える