मुझे एक साधारण मिमी चाहिए: एसएस टाइमर मेरी एक्शनबार पर प्रदर्शित होने के लिए, नीचे से गिनने शुरू करने के लिए मिनटों की संख्या चुनने में सक्षम हो और फिर 0 पर एक बार एक विधि को कॉल करें। क्या यह संभव है और कैसे? आपको लगता है कि मेनू में एक Action View के रूप में कार्यवाही बार में एक TextView
जोड़ने, तो एक CountDownTimer
का उपयोग कर नियमित अंतराल पर यह अपडेट करकेक्या एंड्रॉइड पर एक्शनबार में टाइमर जोड़ना संभव है?
उत्तर
मुझे क्या करना प्रबंधित किया है धन्यवाद।
(एंड्रॉइड 3.0 एमुलेटर पर परीक्षण, एक एंड्रॉइड 4.3 एमुलेटर और एंड्रॉइड 4.3 चलाने वाला एक असली डिवाइस)।
यहां मेनू आइटम के लिए एक्सएमएल है। ध्यान दें कि actionViewClass="android.widget.TextVew"
(शोएएसएक्शन और एक्शन व्यू क्लास में एंड्रॉइड नेमस्पेस नहीं है क्योंकि मैं समर्थन एक्शन बार का उपयोग कर रहा हूं)।
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compatibility="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/break_timer"
android:title="@string/break_timer_title"
compatibility:showAsAction="always"
compatibility:actionViewClass="android.widget.TextView" />
</menu>
onCreateOptionsMenu
में, मैं MenuItem
खोजने के लिए और getActionView
फोन, timerText
निजी TextView
निर्दिष्ट करने के लिए। मैं यहां कुछ पैडिंग भी लागू करता हूं, ताकि स्क्रीन के किनारे पर यह सही न हो।
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.break_timer, menu);
MenuItem timerItem = menu.findItem(R.id.break_timer);
timerText = (TextView) MenuItemCompat.getActionView(timerItem);
timerText.setPadding(10, 0, 10, 0); //Or something like that...
startTimer(30000, 1000); //One tick every second for 30 seconds
return true;
}
मैं एक विधि startTimer
कहा जाता है इसकी onTick
में एक CountDownTimer
शुरू करने और timerText
अपडेट करना होगा। मैं onCreateOptionsMenu
से startTimer
पर कॉल करता हूं ताकि यह सुनिश्चित किया जा सके कि timerText
इसे प्रारंभ करने से पहले एक्सेस नहीं किया गया है। (पहले, मैंने startTimer
को onCreate
से बुलाया, लेकिन NullPointerException
मिला)।
private void startTimer(long duration, long interval) {
CountDownTimer timer = new CountDownTimer(duration, interval) {
@Override
public void onFinish() {
//TODO Whatever's meant to happen when it finishes
}
@Override
public void onTick(long millisecondsLeft) {
int secondsLeft = (int) Math.round((millisecondsLeft/(double) 1000));
timerText.setText(secondsToString(secondsLeft));
}
};
timer.start();
}
मुझे यकीन है कि किसी को भी पढ़ने के लिए इस तरह के "00:00:00" के रूप में एक timecode करने के लिए सेकंड के एक पूर्णांक संख्या परिवर्तित करने के लिए एक बेहतर तरीका पता चल जाएगा हूँ, लेकिन सिर्फ मामले में मैं secondsToString
साझा करेंगे विधि मैंने ऊपर onTick
में उपयोग किया था।
private String secondsToString(int improperSeconds) {
//Seconds must be fewer than are in a day
Time secConverter = new Time();
secConverter.hour = 0;
secConverter.minute = 0;
secConverter.second = 0;
secConverter.second = improperSeconds;
secConverter.normalize(true);
String hours = String.valueOf(secConverter.hour);
String minutes = String.valueOf(secConverter.minute);
String seconds = String.valueOf(secConverter.second);
if (seconds.length() < 2) {
seconds = "0" + seconds;
}
if (minutes.length() < 2) {
minutes = "0" + minutes;
}
if (hours.length() < 2) {
hours = "0" + hours;
}
String timeString = hours + ":" + minutes + ":" + seconds;
return timeString;
}
धन्यवाद मैट! यह पूरी तरह से काम करता है! – madx
timerText.setText() पर NullPointerException; –
मेनू एक्सएमएल
<item
android:id="@+id/counter"
android:title=""
android:showAsAction="always">
</item>
** सार्वजनिक बूलियन onCreateOptionsMenu (मेनू मेनू) "
long timer = 10000;
public Boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu, menu);
final MenuItem counter = menu.findItem(R.id.counter);
new CountDownTimer(timer, 1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = (TimeUnit.MILLISECONDS.toHours(millis))+":"+(TimeUnit.MILLISECONDS.toMinutes(millis) -TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)))+":"+ (TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
counter.setTitle(hms);
timer = millis;
}
public void onFinish() {
counter.setTitle("done!");
}
}.start();
return true;
}
सही उत्तर ... –
हाँ, यह उपयोग जावा में इस कोड को उपकरण पट्टी कार्रवाई में घड़ी जोड़ना संभव नहीं है :
private void startTimer(long duration, long interval) {
CountDownTimer timer = new CountDownTimer(duration, interval) {
@Override
public void onFinish() {
//TODO Whatever's meant to happen when it finishes
}
@Override
public void onTick(long millisecondsLeft) {
int secondsLeft = (int) Math.round((millisecondsLeft/(double) 1000));
timerText.setText(secondsToString(secondsLeft));
}
};
timer.start();
}
और यह भी सिर्फ इस
तरह मेनू फ़ाइल में परिभाषित किया गया टाइमर आईडी का उपयोग करता है, तो अधिक जानने के यात्रा यूट्यूब :)
- 1. सूचीत्मकता में एक्शनबार जोड़ना
- 2. एंड्रॉइड एपीआई लेवल 8 ऐप में एक्शनबार जोड़ना?
- 3. क्या चार्ट में शीर्षक जोड़ना संभव है?
- 4. क्या एमवीसी 3 में रनटाइम पर रूट जोड़ना संभव है?
- 5. क्या एक्शनबार टैब ऊंचाई एक्शनबार ऊंचाई से अधिक बनाना संभव है? यदि हां, तो कैसे?
- 6. क्या आज के विजेट में टाइमर रीफ्रेश करना संभव है?
- 7. क्या टीएफएस पर "प्रीकॉमिट हुक" जोड़ना संभव है?
- 8. क्या एक डीआईवी पर इवेंटलिस्टर जोड़ना संभव है?
- 9. क्या कुबर्नेट्स नोड्स पर स्वैप स्पेस जोड़ना संभव है?
- 10. क्या tmux पैन में टैब जैसी कार्यक्षमता जोड़ना संभव है?
- 11. क्या रीडलाइन .inputrc फ़ाइल में एकाधिक कमांड जोड़ना संभव है?
- 12. क्या पर्यवेक्षक को tableView.contentOffset में जोड़ना संभव है?
- 13. एंड्रॉइड एक्शनबार डिवाइस पर विभाजित नहीं होगा
- 14. क्या एएसपीनेट पैनल में फॉर्म-फीड जोड़ना संभव है?
- 15. क्या @RequiredArgsConstructor (ऑन कॉन्स्ट्रक्टर = @__ (@ ऑटोवायर) में क्वालीफायर जोड़ना संभव है?
- 16. क्या क्लास फाइलों में कस्टम मेटाडेटा जोड़ना संभव है?
- 17. क्या सी # में स्ट्रिंग और डीबीएनएल को जोड़ना संभव है?
- 18. क्या @Query पैरामीटर में वाइल्डकार्ड जोड़ना संभव है?
- 19. एक्शनबार (एंड्रॉइड) में बटन कैसे जोड़ें?
- 20. एक्शनबार
- 21. जावा में, क्या सीरियलज़ेबल इंटरफ़ेस को कक्षा में जोड़ना संभव है जिसमें रनटाइम पर नहीं है?
- 22. क्या एफ # में एकाधिक विशेषताओं को जोड़ना संभव है?
- 23. क्या गिट शाखा में वर्णनात्मक लेबल जोड़ना संभव है?
- 24. क्या लाइब्रेरी में अपना खुद का वर्डनेट जोड़ना संभव है?
- 25. क्या एक कस्टम tinyMCE बटन में कक्षा जोड़ना संभव है?
- 26. क्या सी # या वीबी.नेट में कीवर्ड जोड़ना संभव है?
- 27. क्या संरचना में एक सूची जोड़ना संभव है?
- 28. रेल: क्या है_and_belongs_to_many एसोसिएशन में अतिरिक्त विशेषता जोड़ना संभव है?
- 29. क्या PHP में हेरेडोक स्ट्रिंग को जोड़ना संभव है ..?
- 30. क्या एक csproj फ़ाइल में टिप्पणियां जोड़ना संभव है?
आप अब तक की कोशिश की? – Yup
यहां एक उदाहरण है http://thegeekyland.blogspot.com/2014/07/android-count-down-timer-in-actionbar.html – Arlind