मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

स्पिनर और प्रगति बार (Progress) कैसे दिखाएं

उद्देश्य. यह संकेत देना कि कुछ प्रगति पर है। Progress के तीन मोड हैं, जो कंस्ट्रक्टर द्वारा चुने जाते हैं: घूमता आइकन (स्पिनर), निर्धारित बार (0–100% ज्ञात मान के साथ) और अनिर्धारित (अनंत लूप, जब समय ज्ञात न हो)। जब आपके पास ज्ञात अंश हो (अपलोड, डाउनलोड) तब निर्धारित उपयोग करें; अंश के बिना “लोड हो रहा है…” के लिए अनिर्धारित/स्पिनर उपयोग करें।

प्रयुक्त APIs

  • new Progress(Icon icon) — स्पिनिंग मोड: आइकन को निरंतर घुमाता है।
  • new Progress(float min, float max) — निर्धारित बार मोड: [min, max] सीमा के साथ बार बनाता है; प्रारंभिक मान = min।
  • progress.setValue(float v) — मान अपडेट करता है ([min, max] तक क्लैंप किया गया); भरे हुए अंश की पुनर्गणना करता है। फ्लुएंट।
  • new Progress(ProgressType type) — अनिर्धारित मोड: दी गई शैली में अनंत बार/स्पिनर।
  • ProgressType.MATERIAL, ProgressType.FLUTTER, ProgressType.IOS, ProgressType.STRIPED — अनिर्धारित मोड की दृश्य विविधताएँ (IOS एक वृत्ताकार स्पिनर है; बाकी बार हैं)।
  • progress.pivot(int px, int py) — (स्पिनिंग मोड) कस्टम रोटेशन पिवट; -1,-1 = आइकन का केंद्र।

गैर-स्पष्ट व्यवहार (स्रोत में पुष्ट): एनिमेशन स्वतः शुरू होता है जब Progress को किसी पैरेंट में जोड़ा जाता है (onAdd) और रुक जाता है जब उसे हटाया जाता है (onRemove)। कोई सार्वजनिक start()/stop() नहीं है — प्रगति को “छिपाने” के लिए, कंपोनेंट को स्क्रीन से हटा दें। mode फ़ील्ड final है (कंस्ट्रक्टर में परिभाषित, अपरिवर्तनीय)।

पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएं)

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.graphics.*;

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      // 1) Spinner (घूमता आइकन) — सामान्य "लोड हो रहा है"
      Progress spinner = new Progress(new MaterialIcon("autorenew", 48));
      add(spinner);

      // 2) निर्धारित बार (0 से 100) — वास्तविक प्रगति के अनुसार अपडेट करें
      Progress barra = new Progress(0f, 100f);
      add(barra);
      // ...जैसे-जैसे डाउनलोड आगे बढ़ता है:
      barra.setValue(75f);   // 75% भरा हुआ

      // 3) अनिर्धारित (अनंत लूप) — बिना ज्ञात अंश
      Progress infinito = new Progress(ProgressType.MATERIAL);
      add(infinito);

      // iOS शैली का गोलाकार spinner वेरिएंट:
      Progress ios = new Progress(ProgressType.IOS);
      add(ios);
   }
}

नीचे का अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए MainWindow ढाँचे में रखें।

न्यूनतम अंश

// 1) Spinner (घूमता आइकन) — सामान्य "लोड हो रहा है"
Progress spinner = new Progress(new MaterialIcon("autorenew", 48));
add(spinner);

// 2) निर्धारित बार (0 से 100) — वास्तविक प्रगति के अनुसार अपडेट करें
Progress barra = new Progress(0f, 100f);
add(barra);
// ...जैसे-जैसे डाउनलोड आगे बढ़ता है:
barra.setValue(75f);   // 75% भरा हुआ

// 3) अनिर्धारित (अनंत लूप) — बिना ज्ञात अंश
Progress infinito = new Progress(ProgressType.MATERIAL);
add(infinito);

// iOS शैली का गोलाकार spinner वेरिएंट:
Progress ios = new Progress(ProgressType.IOS);
add(ios);

सत्यापन नोट (कोड 2026). स्रोत में पुष्ट: तीनों कंस्ट्रक्टर Progress(Icon), Progress(float min, float max) और Progress(ProgressType), और उनसे व्युत्पन्न enum Progress.Mode { SPINNING_ICON, DETERMINATE_BAR, INDETERMINATE }। setValue [min, max] तक क्लैंप करता है और progress (अंश 0..1) अपडेट करता है। ProgressType UIConstants में मानों IOS, FLUTTER, MATERIAL, STRIPED के साथ है। परीक्षण परिवेश में (DeviceConfig.isTesting) एनिमेशन स्वतः शुरू नहीं होता।

और गहराई से जानें

  • विजेट पृष्ठ: Progress · मूल स्रोत: अध्याय 14
  • क्षणिक फीडबैक (त्वरित संदेश): mostrar-um-hint.md
क्या यह पृष्ठ उपयोगी था?