質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

7383閲覧

Androidでのcanvas・drawBitmapの使い方について

shin1977

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/01/22 05:18

Andoroid初心者です。
Androidでのcanvas・drawBitmapの使い方についてご教授お願いいたします。
下記の様に描画していき、スクロールのところで上手くいかずに困っている状況です。
よろしくお願いいたします。

下記の様に空白画像を作り、そこに画像をいくつか貼り付けています。
そして、android画面に表示しています。
ここまでは支障なくできました。

map_img = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
canvas = new Canvas(map_img);

canvas.drawBitmap(map_chip_img, dst, src, paint);
((ImageView)findViewById(R.id.imageView)).setImageBitmap(map_img);

この後、画面をタップした際に下にスクロールするイメージで作ろうしています。
まずは、今のイメージを下にコピー移動をしようと思いますが、上手くいきません。
下記の2パターン作りましたが駄目でした。

試作①
dst = new Rect(0, 0, 500, 400);
src = new Rect(0, 100, 500, 500);
canvas.drawBitmap(map_img, dst, src, null);
((ImageView)findViewById(R.id.imageView)).setImageBitmap(map_img);

試作②
canvas.drawBitmap(map_img, 0, 100, null);
((ImageView)findViewById(R.id.imageView)).setImageBitmap(map_img);

何となくうまくいかない原因は、同じ画像へ画像を作ってしまっているために、
鏡みたいに幾つも画像表示ができてしまいのではとは、思っていますが、
良いやり方等、ご教示いただけると助かります。

別のBitmapを作り、そこにコピーすればできたのですが、
連続して動かしたいため、何度もコピーしたくないところもあります。
簡単にcanvas上の画像を動かくことはできないでしょうか?

何卒、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

キャンバスをクリアしてから画像を表示するようにしたらどうでしょうか?

java

1import android.graphics.PorterDuff.Mode; 2 3void onDraw(Canvas canvas) { 4 // キャンバスを透明に塗りつぶす 5 canvas.drawColor(0, Mode.CLEAR); 6 7 // 画像の表示処理 8 ... 9}

投稿2017/01/24 06:44

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shin1977

2017/01/24 12:10

ご回答大変ありがとうございます。 早速キャンバスをクリアしてみましたが、map_img(Bitmap)のキャンバスなので 下記の様に画像を貼り付けしようとすると、画像がなくなってしまいました。 canvas.drawColor(0, PorterDuff.Mode.CLEAR); canvas.drawBitmap(map_img, 0, 70, null); やはり、下記の様に別のmap_img2(Bitmap)を作り、コピー後、 改めてづらしてコピーするのがベストでしょうか? または、コピーは一度にして、Bitmapファイルを交互に使用した方がベスト?? map_img2 = map_img.copy(Bitmap.Config.ARGB_8888, true); canvas.drawBitmap(map_img2, 0, 70, null); 初歩的な質問で、また分かりにくく、申し訳ございませんが、よろしくお願いいたします。
mingos

2017/01/25 05:05

整理すると、最低限キャンバスとして利用するためのBitmapと、そこへ描画するBitmapの2つが必要ですよね。 Bitmap map_img = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(map_img); この、map_imgはキャンバスとして使うので、map_imgはコピーしてはいけません。 キャンバスに表示したい画像のBitmapは新規に作ります。 Resources res = this.getContext().getResources(); Bitmap img1 = BitmapFactory.decodeResource(res, R.drawable.img1); なので、毎回クリアしてから画像を表示すれば良いはずなんですよね。 canvas.drawColor(0, PorterDuff.Mode.CLEAR); canvas.drawBitmap(img1 , 0, 70, null);
shin1977

2017/01/25 14:48

大変ありがとうございます。 参考になります!! 頂いた内容を元に試行錯誤してみたいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問