2017-05-21 6 views
-7

私は、時間を別の色でどれだけ残しているかを視覚的に示すタイマーアプリケーションを作ろうとしています。このように -私たちは子供たちのタイマーを作るにはどうすればいいですか

enter image description here

私は自分自身の視野にアナログ時計が、我々は、この色は事を変えることができますどのようには考えて作られました。任意のボディが本当に素晴らしいとなる提案やサンプルコードを与えることができる場合。私は1つのコードを見つけましたが、それはCoreDovaです。私はそれをネイティブでやっています。 https://github.com/shaungallagher/timer-for-kids

+0

私は解決策を求めていませんすでにアナログ時計をやりました。あなたはなぜ投票しているのですか? – Anirban

答えて

1

カスタムビュー円(using canvas.drawCircle(...))と、時間(角度)も背景色を変更する、変更するたびに再描画されるアーク(using canvas.drawArc(...))を描いてみてください。あなたは自分自身で残りを把握する必要があります。

+0

ありがとうNileshは私を試してみましょう – Anirban

+0

いつでも喜んで助けてください。 –

1

私は自分自身の見解を立てました。アクティビティまたはフラグメントのために呼び出す必要が値を変更するには

<com.abc.xyz.TimerView 
    android:id="@+id/pieChart" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dp" /> 

- -

public class TimerView extends View { 

private static final String TAG = TimerView.class.getName(); 

private static final int RADIUS = 600; 
private static final int BACKGROUND_COLOR = 0x50ff0000; 
private static final int FOREGROUND_COLOR = 0xa0ff0000; 

private static final float STARTING_ANGLE = -90f; 
private static final float FULL_CIRCLE = 360f; 

private ShapeDrawable circle; 
private ShapeDrawable arc; 

private float lastFraction; 

public TimerView(Context context) { 
    super(context); 
    this.init(); 
} 

public TimerView(Context context, AttributeSet attributeSet) { 
    super(context, attributeSet); 
    this.init(); 
} 

private void init() { 
    this.circle = new ShapeDrawable(new OvalShape()); 
    this.circle.getPaint().setColor(BACKGROUND_COLOR); 
    this.circle.setBounds(0, 0, RADIUS, RADIUS); 
    this.lastFraction = 0f; 
    this.arc = new ShapeDrawable(new ArcShape(STARTING_ANGLE, 
      this.lastFraction)); 
    this.arc.getPaint().setColor(FOREGROUND_COLOR); 
    this.arc.setBounds(0, 0, RADIUS, RADIUS); 
} 

protected void onDraw(Canvas canvas) { 
    this.circle.draw(canvas); 
    this.arc.draw(canvas); 
} 

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.setMeasuredDimension(RADIUS, RADIUS); 
} 

public void setFraction(float fraction) { 
    if (fraction < 0f || fraction > 1.f) { 
     throw new IllegalArgumentException("Out of range: " + fraction); 
    } 
    if (fraction != this.lastFraction) { 
     float sweepingAngle = FULL_CIRCLE * fraction; 
     this.arc.setShape(new ArcShape(STARTING_ANGLE, sweepingAngle)); 
     this.postInvalidate(); 
     this.lastFraction = fraction; 
    } else { 
     Log.v(TAG, "Error"); 
    } 
} 
} 

やレイアウトに呼び出す - このようになります誰もがそうだため

pieChart.setFraction((float) .99); 

感謝を多くのサポート

関連する問題