1

gif ファイルの再生に使用するカスタム WebView を作成しました。次に、これを特定の位置で、設定されたサイズを使用してキャンバスに描画する必要があります。

ただし、キャンバス上の正しい場所に挿入できるように、Gif を含むこの webView をビットマップに変換する方法が完全にはわかりません。

私の WebView クラス:

public class finishWebView extends WebView
{

    public finishWebView(Context context, String path) 
    {
        super(context);
        loadUrl(path);
    }
}

メイン アクティビティの生のリソースを取得する:

finishWebView view = new finishWebView(context, "file:///android_asset/test.gif");

画像を正しいサイズに変換してキャンバスに挿入する元のコード:

finish = BitmapFactory.decodeResource(getResources(), R.drawable.finish);
finish = Bitmap.createScaledBitmap(finish, (PhoneWidth / 5), (PhoneWidth / 5), true);

protected void onDraw(Canvas canvas)
{
    canvas.drawBitmap(finish, (j * totalCellWidth), (i * totalCellHeight), null);
}

したがって、基本的には、現在「canvas.drawBitmap(...)」で行っているのと同様に、キャンバス内の指定された場所に表示される gif 画像を使用して webView を描画する方法を考える必要があります。

- - - - - - - - - - - - - - - - - - 編集 - - - - - - - --------------------------

mikejonesguy によって提供されたコード スニペットを使用して、ここまでたどり着きましたが、空白の画面が表示されるだけです。

public static Bitmap createBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
}

// Within onDraw
GIFView gifView = new GIFView(context);
canvas.drawBitmap(createBitmapFromView(gifView), (j * totalCellWidth), (i * totalCellHeight), null);

通常の xml レイアウト ページで GIFView をテストしたところ、正常に動作しましたが、キャンバスに挿入できませんでした。

4

1 に答える 1

0

ビューをビットマップに変換するには、いくつかの方法があります。この方法は 1 つの方法です。

public static Bitmap createBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
}

もちろん、これを呼び出してビットマップを取得する前に、webView が GIF の読み込みを完了するまで待つ必要があります。

アニメーション gif を再生しようとしているだけの場合は、この他の SO 投稿が役立つ場合があります。Android で gif を表示する

于 2013-10-04T03:09:34.303 に答える