2014-12-24 18 views
7

Merhaba herkes, ben bu Eğitimi takip ediyorum lütfen benim küçük bir proje üzerinde bana yardımcı olabilir zamanlayıcı ile eşleşmiyor ve ben EditText İlerleme Çubuğu işlerin içine 1 dakika eklemek nereye parçası lazım iyi 1 Saniyede ilerleme ancak EditText'e 1 Dakikadan fazla zaman koyarken İlerleme Çubuğu çalışmıyor. Aşağı gitmez lütfen yardım edin?Android Sayım Sayacı Dairesel İlerleme Çubuğu

Timer main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/LinearLayout1" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="#086A87"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:orientation="horizontal" 
    android:padding="10dp" > 

    <EditText 
     android:id="@+id/edtTimerValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:ems="10" 
     android:hint="minutes" 
     android:inputType="phone" /> 

    <Button 
     android:id="@+id/btnStartTime" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:layout_weight="2" 
     android:gravity="center" 
     android:text="Start Timer" 
     android:background="@drawable/custombuttongreen" 
     android:textColor="#fff"/> 

    <Button 
     android:id="@+id/btnStopTime" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:layout_weight="2" 
     android:gravity="center" 
     android:text="Stop Timer" 
     android:visibility="gone" 
     android:background="@drawable/custombuttongreen" 
     android:textColor="#fff"/> 

</LinearLayout> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:orientation="vertical" > 

</LinearLayout> 



<RelativeLayout 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" > 

    <ProgressBar 
    android:id="@+id/progressbar" 
    android:layout_width="350dip" 
    android:layout_height="350dip" 
    android:indeterminate="false" 
    android:progressDrawable="@drawable/circle" 
    android:background="@drawable/circle_shape" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:max="60" 
    android:progress="0" /> 

    <TextView 
    android:id="@+id/tvTimeCount" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:text="00:00" 
    android:textColor="#fff" 
    android:textSize="60dip"/> 

</RelativeLayout> 

MainActivity.java

package com.tag.countdowntimer; 
import com.tag.countdowntimer.R.drawable; 
import android.R.color; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ProgressBar; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity implements OnClickListener { 

int i=-1; 
ProgressBar mProgressBar; 

private Button buttonStartTime, buttonStopTime; 
private EditText edtTimerValue; 
private TextView textViewShowTime; // will show the time 
private CountDownTimer countDownTimer; // built in android class 
             // CountDownTimer 
private long totalTimeCountInMilliseconds; // total count down time in 
              // milliseconds 
private long timeBlinkInMilliseconds; // start time of start blinking 
private boolean blink; // controls the blinking .. on and off 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    buttonStartTime = (Button) findViewById(R.id.btnStartTime); 
    buttonStopTime = (Button) findViewById(R.id.btnStopTime); 
    textViewShowTime = (TextView) findViewById(R.id.tvTimeCount); 
    edtTimerValue = (EditText) findViewById(R.id.edtTimerValue); 

    buttonStartTime.setOnClickListener(this); 
    buttonStopTime.setOnClickListener(this); 

    mProgressBar = (ProgressBar) findViewById(R.id.progressbar); 

} 

@Override 
public void onClick(View v) { 
    if (v.getId() == R.id.btnStartTime) { 
     textViewShowTime.setTextAppearance(getApplicationContext(), 
       R.style.normalText); 
     setTimer(); 

     //Hides the Keyboard 
     InputMethodManager imm = (InputMethodManager)getSystemService(
        Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(edtTimerValue.getWindowToken(), 0); 

     buttonStopTime.setVisibility(View.VISIBLE); 
     buttonStartTime.setVisibility(View.GONE); 
     edtTimerValue.setVisibility(View.GONE); 
     edtTimerValue.setText(""); 
     //textViewShowTime.setTextColor(color.white); 
     //textViewShowTime.getContext(); 
     startTimer(); 

    } else if (v.getId() == R.id.btnStopTime) { 
     countDownTimer.cancel(); 
     buttonStartTime.setVisibility(View.VISIBLE); 
     buttonStopTime.setVisibility(View.GONE); 
     edtTimerValue.setVisibility(View.VISIBLE); 
    } 
} 

private void setTimer() { 
    int time = 0; 
    if (!edtTimerValue.getText().toString().equals("")) { 
     time = Integer.parseInt(edtTimerValue.getText().toString()); 
    } else 
     Toast.makeText(MainActivity.this, "Please Enter Minutes...", 
       Toast.LENGTH_LONG).show(); 

    totalTimeCountInMilliseconds = 60 * time * 1000; 

    timeBlinkInMilliseconds = 30 * 1000; 
} 

private void startTimer() { 
    countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) { 
     // 500 means, onTick function will be called at every 500 
     // milliseconds 

     @Override 
     public void onTick(long leftTimeInMilliseconds) { 
      long seconds = leftTimeInMilliseconds/1000; 
      //i++; 
      //Setting the Progress Bar to decrease wih the timer 
      mProgressBar.setProgress((int) (leftTimeInMilliseconds/1000)); 
      textViewShowTime.setTextAppearance(getApplicationContext(), 
        R.style.normalColor); 


      if (leftTimeInMilliseconds < timeBlinkInMilliseconds) { 
       textViewShowTime.setTextAppearance(getApplicationContext(), 
         R.style.blinkText); 
       // change the style of the textview .. giving a red 
       // alert style 

       if (blink) { 
        textViewShowTime.setVisibility(View.VISIBLE); 
        // if blink is true, textview will be visible 
       } else { 
        textViewShowTime.setVisibility(View.INVISIBLE); 
       } 

       blink = !blink; // toggle the value of blink 
      } 

      textViewShowTime.setText(String.format("%02d", seconds/60) 
        + ":" + String.format("%02d", seconds % 60)); 
      // format the textview to show the easily readable format 

     } 

     @Override 
     public void onFinish() { 
      // this function will be called when the timecount is finished 
      textViewShowTime.setText("Time up!"); 
      textViewShowTime.setVisibility(View.VISIBLE); 
      buttonStartTime.setVisibility(View.VISIBLE); 
      buttonStopTime.setVisibility(View.GONE); 
      edtTimerValue.setVisibility(View.VISIBLE); 
     } 

    }.start(); 

} 
} 

Normal Devlet

enter image description here

Ben girdiğinizde 1 I 3 Dakika

enter image description here

İlerleme Çubuğu main.xml olarak

+1

Öğreticiye bir bağlantı verebilir misiniz lütfen? – Pejs

cevap

3

Aşağı Sayma değildir Girilen Dakika

enter image description here

ProgressBar için, max değerini 60 olarak belirttiniz. ilerleme çubuğu, maksimum değeri 60 olarak alır ve ilerleme çubuğunuz 60 saniyeden sonra azalmaya başlar.

Bunun yerine İlerleme çubuğunuzu her zaman düzgün bir şekilde çalışmak için "setTimer()" yönteminde aşağıdaki satırı yazın.

mProgressBar.setMax(60*time); 
+0

zaman değişkeni –

+0

değişkenine çözümlenemiyor setTimer() yönteminde ilk satırın kendisi zaman değişkeni beyanıdır ... ifadeyi yazdığınız yeri bir kez işaretleyin. Yöntemin sonunda daha iyi yazın. – Chandrakanth

+0

Bunu bulamadım ancak bu özel pTime ürününü denedim; mProgressBar.setMax ((int) pTime); ve bu çalıştı, ancak bir saniye için 60 olan varsayılan MaxProgress yanıp söner, daha sonra hesaplama etkilemesine neden olur, ancak doğru değil de iyi olduğunu düşünüyorum –