मैं क्रोनोमीटर को रोकना चाहता हूं और जब मैं बटन क्लिक करता हूं तो मैं क्रोमोनेटर को गिनने के लिए जारी रखना चाहता हूं ... मैं खोजता हूं लेकिन इससे संबंधित कोई फ़ंक्शन नहीं हो सकता .. यह कैसे हो सकता है?Android_Chronometer रोकें
उत्तर
आप वाला हैं एक चर कि समय बीत गया है कि जब घड़ी शुरू किया गया था पर ट्रैक रखता है की जरूरत है:
timeWhenStopped = mChronometer.getBase() - SystemClock.elapsedRealtime();
mChronometer.stop();
:
long timeWhenStopped = 0;
अद्यतन चर का मान जब आप इस तरह ठीक घड़ी रोक
हम भी यह शुरू करने से पहले ठीक घड़ी समायोजित करने के लिए इस चर का उपयोग करेगा:
mChronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
mChronometer.start();
और अंत में यदि आपके पास अपने क्रोनोमीटर को रीसेट करने का कोई तरीका है तो आपको समय को रीसेट करने के लिए याद रखना चाहिए। कुछ इस तरह:
mChronometer.setBase(SystemClock.elapsedRealtime());
timeWhenStopped = 0;
मैंने इसके लिए PauseableChronometer
कक्षा बनाई है।
import android.content.Context;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.widget.Chronometer;
public class PausableChronometer extends Chronometer {
private long timeWhenStopped = 0;
public PausableChronometer(Context context) {
super(context);
}
public PausableChronometer(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PausableChronometer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void start() {
setBase(SystemClock.elapsedRealtime()+timeWhenStopped);
super.start();
}
@Override
public void stop() {
super.stop();
timeWhenStopped = getBase() - SystemClock.elapsedRealtime();
}
public void reset() {
stop();
setBase(SystemClock.elapsedRealtime());
timeWhenStopped = 0;
}
public long getCurrentTime() {
return timeWhenStopped;
}
public void setCurrentTime(long time) {
timeWhenStopped = time;
setBase(SystemClock.elapsedRealtime()+timeWhenStopped);
}
}
दो अन्य उत्तर समान हैं, और घड़ी के प्रदर्शन पर बहुत अच्छी तरह से काम करते हैं, लेकिन वे एक दोष है: timeWhenStopped
, साथ ही getCurrentTime()
द्वारा दिए गए मान, नकारात्मक है।
public class PausableChronometer extends Chronometer {
private long timeWhenStopped = 0;
public PausableChronometer(Context context) {
super(context);
}
public PausableChronometer(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PausableChronometer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void start() {
setBase(SystemClock.elapsedRealtime() - timeWhenStopped);
super.start();
}
@Override
public void stop() {
super.stop();
timeWhenStopped = SystemClock.elapsedRealtime() - getBase();
}
public void reset() {
stop();
setBase(SystemClock.elapsedRealtime());
timeWhenStopped = 0;
}
public long getCurrentTime() {
return timeWhenStopped;
}
public void setCurrentTime(long time) {
timeWhenStopped = time;
setBase(SystemClock.elapsedRealtime() - timeWhenStopped);
}
}
आप "अब" के लिए SystemClock.elapsedRealtime()
एक संकेतक के रूप में समझने के लिए मिल गया है:
यहाँ मेरी सुझाव, इन दो सवालों के जवाब के आधार पर है। तो जब हम क्रोनोमीटर शुरू करते हैं, तो हम अतीत में N
सेकेंड सेट करेंगे, N
टाइमर का वर्तमान मान (0 पहली शुरुआत के मामले में) होने के नाते। इसी तरह, क्रोनोमीटर को रोकते समय, क्रोनोमीटर द्वारा प्रदर्शित समय पहले सेट बेस (getBase()
) और अब (SystemClock.elapsedRealtime()
) के बीच समाप्त हो गया है, इसलिए घटाव।
- 1. रोकें
- 2. "रोकें"
- 3. सोलारिस जीडीबी: कैसे रोकें रोकें?
- 4. बल रोकें या त्रुटि पर रोकें
- 5. समांतर। Foreach C# रोकें और रोकें फंक्शन?
- 6. रोकें विम
- 7. रोकें बैश
- 8. रोकें निष्पादन
- 9. रोकें jQuery
- 10. रोकें NSOperation
- 11. अक्षम 'रोकें'
- 12. रोकें WPF
- 13. रोकें SWT
- 14. रोकें चयन +
- 15. विशिष्ट AJAX/XmlHttpRequests लॉगिंग से अपाचे को रोकें (रोकें)?
- 16. रोकें रेल परीक्षण
- 17. सास रोकें मूल्य
- 18. फ़ॉर्म को कैसे रोकें
- 19. WP7 सूची बॉक्स रोकें
- 20. रोकें कर्सर बदलें
- 21. डुप्लिकेट अजाक्स सबमिशन रोकें?
- 22. रोकें ट्विटर वहाँ
- 23. यूट्यूब इफ्रैम वीडियो रोकें
- 24. नेट: XmlDocument.LoadXml रोकें DTD
- 25. रोकें पल्सेट jQuery प्रभाव
- 26. गिट: गिट पुश रोकें
- 27. रोकें इंटेलिजेंस डिस्प्ले टाइमआउट
- 28. कंसोल C++ में रोकें?
- 29. subprocess को रोकें। पाइथन
- 30. रोकें प्रिंट() आर
अद्भुत उत्तर :) –
अच्छा जवाब ... अच्छे शिलालेख के साथ .. !! इसे उत्तर के रूप में स्वीकार किया जाना चाहिए .. @ और अगर यह काम कर रहा है .. !! –
यह स्वीकार्य उत्तर क्यों नहीं है? मेरे लिए अच्छा काम करता है, धन्यवाद! – jamesc