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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

1回答

1890閲覧

onDraw内でタイマーを表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Android

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

Android Studio

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

0グッド

2クリップ

投稿2017/12/20 17:09

###前提・実現したいこと
onDraw内で動くタイマーを作成したいです

###発生している問題

drawTextを使って時間経過を表示させようとしたのですが 経過時間が00:00.0から動いてくれません Android Studio2.3.3を使用しています

###MainActivity.java

Java

1import android.content.Context; 2import android.graphics.Canvas; 3import android.graphics.Paint; 4import android.os.Handler; 5import android.support.v7.app.AppCompatActivity; 6import android.os.Bundle; 7import android.view.View; 8import android.widget.TextView; 9 10import java.text.SimpleDateFormat; 11import java.util.Locale; 12 13public class MainActivity extends AppCompatActivity { 14 15 Paint paint = new Paint(); 16 17 Handler handler = new Handler(); 18 19 Runnable runnable = new Runnable() { 20 @Override 21 public void run() { 22 count ++; 23 dataFormat.format(count*period); 24 handler.postDelayed(this, period); 25 } 26 }; 27 28 SimpleDateFormat dataFormat = 29 new SimpleDateFormat("mm:ss.S", Locale.US); 30 31 int count, period; 32 33 @Override 34 protected void onCreate(Bundle savedInstanceState) { 35 super.onCreate(savedInstanceState); 36 setContentView(R.layout.activity_main); 37 38 39 MyView mv=new MyView(this); 40 41 setContentView(mv); 42 43 } 44 45 class MyView extends View { 46 public MyView(Context context) { 47 super(context); 48     } 49 50 protected void onDraw(Canvas canvas){ 51 52 count = 0; 53 period = 100; 54 55 paint.setTextSize(30); 56 canvas.drawText("経過時間:"+dataFormat.format(0),20,50,paint); 57 58 handler.post(runnable); 59 60 } 61 62 } 63 64}

###試したこと
TextViewを使用して表示しようとしましたがエラー落ち多発で断念してしまいました

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

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

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

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

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

guest

回答1

0

ベストアンサー

解決致しました。再描画のことがすっかり頭から抜けていて変なところで悩みすぎてしまいました
再描画に伴い、format(0)からformat(count*period)へ変更
handler.post(runnable)のフラグ管理が必要になったのでクラス変数を新規採用
countとperiodの初期値をクラス変数に変更しました

ただ、再描画を扱うのでランダム変数を使った描画には向いてないなぁという印象を受けます

同じことで悩んでいる方のためにも修正した主要部のコードを公開致します
大変お騒がせしました

public class MainActivity extends AppCompatActivity { Paint paint = new Paint(); Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { count ++; dataFormat.format(count*period); handler.postDelayed(this, period); } }; SimpleDateFormat dataFormat = new SimpleDateFormat("mm:ss.S", Locale.US); int count=0, period=100; int flag1=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyView mv=new MyView(this); setContentView(mv); } class MyView extends View { public MyView(Context context) { super(context); } protected void onDraw(Canvas canvas){ paint.setTextSize(30); canvas.drawText("経過時間:"+dataFormat.format(count*period),20,50,paint); if(flag1==0){ handler.post(runnable); flag1=1; } invalidate(); } } }

投稿2017/12/20 19:33

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問