Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Android

जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका <पी> जब मैंने जेटपैक कंपोज़ के बारे में अपना आखिरी लेख लिखा था, तो मैंने वहां कहा था कि जेटपैक कंपोज़ में कुछ (मेरी राय में) बुनियादी घटकों की कमी है, और उनमें से एक टूलटिप है।

<पी> उस समय, टूलटिप्स प्रदर्शित करने के लिए कोई अंतर्निहित कंपोज़ेबल नहीं था और कई वैकल्पिक समाधान ऑनलाइन मौजूद थे। उन समाधानों के साथ समस्या यह थी कि एक बार जेटपैक कंपोज़ ने नए संस्करण जारी कर दिए, तो वे समाधान टूट सकते थे। इसलिए यह आदर्श नहीं था और समुदाय को उम्मीद थी कि भविष्य में कभी-कभी टूलटिप्स के लिए समर्थन जोड़ा जाएगा।

<पी> मुझे यह कहते हुए खुशी हो रही है कि कंपोज़ मटेरियल 3 के संस्करण 1.1.0 के बाद से, अब हमने टूलटिप समर्थन बनाया है। 👏

<पी> हालाँकि यह अपने आप में बहुत बढ़िया है, उस संस्करण को रिलीज़ हुए एक वर्ष से अधिक समय बीत चुका है। और बाद के संस्करणों के साथ, टूलटिप्स से संबंधित एपीआई में भी भारी बदलाव आया।

<पी> यदि आप चेंजलॉग पर जाएं, तो आप देखेंगे कि सार्वजनिक और आंतरिक एपीआई कैसे बदल गए हैं। तो ध्यान रखें, कि जब आप इस लेख को पढ़ेंगे, तो चीजें बदलती रहेंगी क्योंकि टूलटिप्स से संबंधित हर चीज अभी भी एनोटेशन ExperimentalMaterial3Api::class द्वारा चिह्नित है। .

<पी> ❗️ इस लेख के लिए प्रयुक्त सामग्री 3 का संस्करण 1.2.1 है, जो 6 मार्च 2024 को जारी किया गया था

<पी> अब हमारे पास दो अलग-अलग प्रकार के टूलटिप्स के लिए समर्थन है:

  1. <पी> सादा टूलटिप

  2. <पी> रिच मीडिया टूलटिप

सादा टूलटिप

<पी> आप किसी आइकन बटन के बारे में जानकारी प्रदान करने के लिए पहले प्रकार का उपयोग कर सकते हैं जो अन्यथा स्पष्ट नहीं होगा। उदाहरण के लिए, आप किसी उपयोगकर्ता को यह बताने के लिए एक सादे टूलटिप का उपयोग कर सकते हैं कि आइकन बटन क्या दर्शाता है।

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> अपने एप्लिकेशन में टूलटिप जोड़ने के लिए, आप टूलटिपबॉक्स का उपयोग करते हैं रचनायोग्य. यह रचना कई तर्क लेती है:

fun TooltipBox(
 positionProvider: PopupPositionProvider,
 tooltip: @Composable TooltipScope.() -> Unit,
 state: TooltipState,
 modifier: Modifier = Modifier,
 focusable: Boolean = true,
 enableUserInput: Boolean = true,
 content: @Composable () -> Unit,
)
<पी> यदि आपने पहले कंपोज़ेबल्स का उपयोग किया है तो इनमें से कुछ से आपको परिचित होना चाहिए। मैं यहां उन पर प्रकाश डालूंगा जिनका विशिष्ट उपयोग मामला है:

  • <पी> पोजीशनप्रोवाइडर - पॉपअपपोजिशनप्रोवाइडर का प्रकार, और टूलटिप की स्थिति की गणना करने के लिए उपयोग किया जाता है।

  • <पी> टूलटिप - यह वह जगह है जहां आप यूआई डिज़ाइन कर सकते हैं कि टूलटिप कैसा दिखेगा।

  • <पी> राज्य - यह वह राज्य रखता है जो एक विशिष्ट टूलटिप इंस्टेंस से जुड़ा होता है। यह टूलटिप को दिखाने/खारिज करने जैसे तरीकों को उजागर करता है और किसी एक उदाहरण को इंस्टेंट करते समय, आप यह घोषित कर सकते हैं कि टूलटिप लगातार बनी रहनी चाहिए या नहीं (मतलब यह तब तक स्क्रीन पर प्रदर्शित होती रहनी चाहिए जब तक कोई उपयोगकर्ता टूलटिप के बाहर क्लिक कार्रवाई नहीं करता)।

  • <पी> सामग्री - यह यूआई है जिसे टूलटिप ऊपर/नीचे प्रदर्शित करेगा।

<पी> यहां बेसिकटूलटिपबॉक्स को इंस्टेंट करने का एक उदाहरण दिया गया है सभी प्रासंगिक तर्कों के साथ:

@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
@Composable
fun BasicTooltip() {
 val tooltipPosition = TooltipDefaults.rememberPlainTooltipPositionProvider()
 val tooltipState = rememberBasicTooltipState(isPersistent = false)
 BasicTooltipBox(positionProvider = tooltipPosition,
 tooltip = { Text("Hello World") } ,
 state = tooltipState) {
 IconButton(onClick = { }) {
 Icon(imageVector = Icons.Filled.Favorite, 
 contentDescription = "Your icon's description")
 }
 }
}
<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> जेटपैक कंपोज़ में टूलटिपडिफॉल्ट्स नामक एक अंतर्निहित क्लास है। टूलटिपबॉक्स बनाने वाले तर्कों को त्वरित करने में मदद के लिए आप इस क्लास का उपयोग कर सकते हैं। उदाहरण के लिए, आप TooltipDefaults.rememberPlainTooltipPositionProvider का उपयोग कर सकते हैं एंकर तत्व के संबंध में टूलटिप को सही ढंग से स्थित करने के लिए।

रिच टूलटिप

<पी> एक रिच मीडिया टूलटिप एक सादे टूलटिप की तुलना में अधिक जगह लेता है और इसका उपयोग आइकन बटन की कार्यक्षमता के बारे में अधिक संदर्भ प्रदान करने के लिए किया जा सकता है। जब टूलटिप दिखाया जाता है, तो आप आगे स्पष्टीकरण या परिभाषाएँ प्रदान करने के लिए इसमें बटन और लिंक जोड़ सकते हैं।

<पी> इसे टूलटिपबॉक्स के अंदर एक सादे टूलटिप के समान ही इंस्टेंट किया जाता है, लेकिन आप रिचटूलटिप कंपोज़ेबल का उपयोग करते हैं।

TooltipBox(positionProvider = tooltipPosition,
 tooltip = {
 RichTooltip(
 title = { Text("RichTooltip") },
 caretSize = caretSize,
 action = {
 TextButton(onClick = {
 scope.launch {
 tooltipState.dismiss()
 tooltipState.onDispose()
 }
 }) {
 Text("Dismiss")
 }
 }
 ) {
 Text("This is where a description would go.")
 }
 },
 state = tooltipState) {
 IconButton(onClick = {
 /* Icon button's click event */
 }) {
 Icon(imageVector = tooltipIcon,
 contentDescription = "Your icon's description",
 tint = iconColor)
 }
 }
<पी> रिच टूलटिप के बारे में ध्यान देने योग्य कुछ बातें:

  1. <पी> रिच टूलटिप में कैरेट के लिए समर्थन होता है।

  2. <पी> आप उपयोगकर्ताओं को अधिक जानकारी प्राप्त करने का विकल्प देने के लिए टूलटिप में एक क्रिया (अर्थात् एक बटन) जोड़ सकते हैं।

  3. <पी> आप टूलटिप को ख़ारिज करने के लिए तर्क जोड़ सकते हैं।

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

एज केस

<पी> जब आप अपनी टूलटिप स्थिति को सतत के रूप में चिह्नित करना चुनते हैं , इसका मतलब यह है कि एक बार जब उपयोगकर्ता आपके टूलटिप को दिखाने वाले यूआई के साथ इंटरैक्ट करता है, तो यह तब तक दृश्यमान रहेगा जब तक उपयोगकर्ता स्क्रीन पर कहीं और दबाता नहीं है।

<पी> यदि आपने ऊपर रिच टूलटिप का उदाहरण देखा है, तो आपने देखा होगा कि हमने टूलटिप पर क्लिक करने के बाद उसे खारिज करने के लिए एक बटन जोड़ा है।

<पी> उपयोगकर्ता द्वारा उस बटन को दबाते ही एक समस्या उत्पन्न हो जाती है। चूंकि बर्खास्तगी कार्रवाई टूलटिप पर की जाती है, यदि कोई उपयोगकर्ता इस टूलटिप को लागू करने वाले यूआई आइटम पर एक और लंबी प्रेस करना चाहता है, तो टूलटिप दोबारा नहीं दिखाया जाएगा। इसका मतलब यह है कि टूलटिप की स्थिति इसे खारिज किए जाने पर कायम है। तो, हम कैसे आगे बढ़ें और इसका समाधान कैसे करें?

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> टूलटिप की स्थिति को "रीसेट" करने के लिए, हमें onDispose को कॉल करना होगा वह विधि जो टूलटिप स्थिति के माध्यम से उजागर होती है। एक बार जब हम ऐसा कर लेते हैं, तो टूलटिप स्थिति रीसेट हो जाती है और जब उपयोगकर्ता यूआई आइटम पर एक लंबी प्रेस करेगा तो टूलटिप फिर से दिखाया जाएगा।

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun RichTooltip() {
 val tooltipPosition = TooltipDefaults.rememberRichTooltipPositionProvider()
 val tooltipState = rememberTooltipState(isPersistent = true)
 val scope = rememberCoroutineScope()
 TooltipBox(positionProvider = tooltipPosition,
 tooltip = {
 RichTooltip(
 title = { Text("RichTooltip") },
 caretSize = TooltipDefaults.caretSize,
 action = {
 TextButton(onClick = {
 scope.launch {
 tooltipState.dismiss()
 tooltipState.onDispose() /// <---- HERE
 }
 }) {
 Text("Dismiss")
 }
 }
 ) {
 }
 },
 state = tooltipState) {
 IconButton(onClick = { }) {
 Icon(imageVector = Icons.Filled.Call, contentDescription = "Your icon's description")
 }
 }
}
<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> एक अन्य परिदृश्य जहां टूलटिप स्थिति रीसेट नहीं होती है, वह यह है कि उपयोगकर्ता की कार्रवाई के अनुसार खारिज विधि के लिए खुद को कॉल करने के बजाय, उपयोगकर्ता टूलटिप के बाहर क्लिक करता है, जिससे इसे खारिज कर दिया जाता है। यह पर्दे के पीछे की ख़ारिज विधि को कॉल करता है और टूलटिप स्थिति को ख़ारिज करने के लिए सेट किया जाता है। हमारे टूलटिप को दोबारा देखने के लिए यूआई तत्व पर लंबे समय तक दबाने से कुछ नहीं होगा।

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> टूलटिप की ऑनडिस्पोज़ विधि को कॉल करने वाला हमारा तर्क ट्रिगर नहीं होता है, तो हम टूलटिप की स्थिति को कैसे रीसेट कर सकते हैं?

<पी> फ़िलहाल मैं इसका पता नहीं लगा पाया हूं. यह टूलटिप के MutatorMutex से संबंधित हो सकता है। शायद आगामी रिलीज़ के साथ, इसके लिए एक एपीआई होगी। मैंने देखा कि यदि अन्य टूलटिप स्क्रीन पर मौजूद हैं और उन्हें दबाया जाता है, तो यह पहले क्लिक किए गए टूलटिप को रीसेट कर देता है।

<पी> जेटपैक कंपोज़ में टूलटिप्स का उपयोग करना:चरण-दर-चरण मार्गदर्शिका

<पी> यदि आप यहां प्रदर्शित कोड देखना चाहते हैं, तो आप इस GitHub रिपॉजिटरी

पर जा सकते हैं <पी> यदि आप किसी एप्लिकेशन में टूलटिप्स देखना चाहते हैं, तो आप इसे यहां देख सकते हैं।

संदर्भ

  • <पी> मटेरियल3 टूलटिप अवलोकन
  • <पी> टूलटिप डिफ़ॉल्ट

  • <पी> टूलटिप स्रोत कोड

<पी> मुफ़्त में कोड करना सीखें. फ्रीकोडकैंप के ओपन सोर्स पाठ्यक्रम ने 40,000 से अधिक लोगों को डेवलपर्स के रूप में नौकरी पाने में मदद की है। आरंभ करें


  1. SEC_ERROR_REUSED_ISSUER_AND_SERIAL Firefox में सुरक्षित कनेक्शन विफल SEC_ERROR_REUSED_ISSUER_AND_SERIAL Firefox में सुरक्षित कनेक्शन विफल

    बहुत सारे उपयोगकर्ता रिपोर्ट कर रहे हैं कि जब वे किसी वेबसाइट या स्थानीय वेब सर्वर तक पहुँचने का प्रयास करते हैं, तो उन्हें SEC ERROR REUSED ISSUER AND SERIAL दिखाई देता है। चेतावनी। यह समस्या आमतौर पर फ़ायरफ़ॉक्स . में रिपोर्ट की जाती है ब्राउज़र - लेकिन क्रोम, ओपेरा और एज में भी इसी तरह की त्रुटि

  1. विंडोज 10 में विंडोज बैकअप को डिफॉल्ट में कैसे रीसेट करें विंडोज 10 में विंडोज बैकअप को डिफॉल्ट में कैसे रीसेट करें

    यदि आपको Windows बैकअप में समस्या आ रही है, या आप अब इसका उपयोग नहीं करना चाहते हैं, तो आपको इसकी सेटिंग रीसेट करने का विकल्प नहीं मिलेगा। हालाँकि, यदि आप सुविधा को फिर से शुरू या अक्षम करना चाहते हैं, तो आप इस कार्य को कुछ आदेशों के साथ पूरा कर सकते हैं। इस पोस्ट में, हम आपको दिखाएंगे कि कैसे विंडो

  1. अपने विंडोज 10 पर पावर योजनाओं को प्रभावी ढंग से और कुशलता से प्रबंधित करें अपने विंडोज 10 पर पावर योजनाओं को प्रभावी ढंग से और कुशलता से प्रबंधित करें

    अधिकांश उपयोगकर्ताओं के पास अपने पोर्टेबल लैपटॉप पर विंडोज ओएस होता है और इस तरह, उनके लिए यह अनिवार्य हो जाता है कि वे अपनी बैटरी को जितना संभव हो सके बढ़ाएँ। सौभाग्य से, Windows ग्रीन है; और उसके पास बिजली प्रबंधन की बेहतरीन योजनाएँ हैं। अपने विंडोज पीसी पर पावर स्कीम प्रबंधित करें पावर प्लान य