2011-02-17 12 views
44

मैं एंड्रॉइड में एक गतिविधि संकेतक कैसे दिखा सकता हूं? क्या कोई एंड्रॉइड लाइब्रेरी दी गई विधि है? यदि नहीं, तो कृपया मुझे Android में गतिविधि संकेतक दिखाने के लिए उपयोग की जाने वाली तकनीकों को बताएं?एंड्रॉइड गतिविधि संकेतक?

+0

डी 'आप एक ProgressDialog पर इस्तेमाल की तरह स्टैंडअलोन अनंत प्रगति संकेतक की तरह कुछ (http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog) – Olegas

+0

"गतिविधि सूचक" है मतलब "गतिविधि" वर्ग और एंड्रॉइड में अवधारणा के साथ बहुत भ्रमित ... यह विचार नहीं मिला कि यह प्रगति संवाद/बार हो सकता है :-) लेकिन फिर एंड्रॉइड में कुछ चीजें हैं, जहां मुझे सही नहीं पता नाम और मैं इस प्रकार –

उत्तर

52

इस

ProgressDialog mDialog = new ProgressDialog(getApplicationContext()); 
      mDialog.setMessage("Please wait..."); 
      mDialog.setCancelable(false); 
      mDialog.show(); 
+0

के लिए Google पर सक्षम नहीं हूं, मैं आईफोन में एक गतिविधि संकेतक दिखाना चाहता हूं। क्या एक व्यस्त छवि दिखाना संभव है? –

+0

हाँ एनीमेशन और कस्टम छवियों का उपयोग करके, लेकिन उपयोगकर्ता को चयन करने से रोकने नहीं देगा यानी उपयोगकर्ता कुछ बटन चुन सकते हैं और प्रतिक्रिया के लिए प्रतीक्षा कर रहे अन्य गतिविधि के लिए सीधे – ingsaurabh

+2

यदि आप 'विंडोमैनेजर $ BadTokenException' प्राप्त करना समाप्त करते हैं तो http: // /stackoverflow.com/q/1561803/650233 –

18

जैसे कुछ काम करते हैं वहाँ मोडल ProgressDialog का उपयोग किए बिना गतिविधि सूचक दिखा के दो अन्य तरीके हैं।

आप अपने लेआउट में ImageView का उपयोग कर सकते हैं और इसमें एनीमेशन लागू कर सकते हैं। Refer developer's site

public void startAnimation() { 
    // Create an animation 
    RotateAnimation rotation = new RotateAnimation(
     0f, 
     360f, 
     Animation.RELATIVE_TO_SELF, 
     0.5f, 
     Animation.RELATIVE_TO_SELF, 
     0.5f); 
    rotation.setDuration(1200); 
    rotation.setInterpolator(new LinearInterpolator()); 
    rotation.setRepeatMode(Animation.RESTART); 
    rotation.setRepeatCount(Animation.INFINITE); 

    // and apply it to your imageview 
    findViewById(R.id.myActivityIndicator).startAnimation(rotation); 
} 

या आप एक पृष्ठभूमि छवि का वर्णन करने के है, जो कुछ घूर्णन एनीमेशन होगा एक्सएमएल-drawable उपयोग कर सकते हैं:

सबसे पहले एक drawable का वर्णन (में यानी /res/drawable/my-indicator.xml)

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/spinner_black_76" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:framesCount="12" 
    android:frameDuration="100" /> 

फिर

+1

एनीमेशन को कैसे रोकता है ?? –

+1

आपको कुछ बिंदु – Shlublu

79

एंड्रॉयड में आईओएस गतिविधि संकेतक का सबसे सीधा बराबर ProgressBar है कुछ दृश्य की पृष्ठभूमि में यह सेट लेकिन अनिश्चित करने के लिए सेट। तो आप दृश्य को अपने लेआउट में छोड़ सकते हैं और यह आपको एक कताई एनीमेशन प्रदान करेगा।

<ProgressBar 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:id="@+id/ctrlActivityIndicator" 
    android:indeterminateOnly="true" 
    android:keepScreenOn="true" 
    /> 

आप उपयोगकर्ता को कुछ पृष्ठभूमि गतिविधि इंगित करने के लिए इसका उपयोग कर सकते हैं।

+9

पर view.setAnimation (null) का उपयोग करना होगा, यह सही जवाब –

+2

परिपत्र बार का रंग बदलने के लिए सही उत्तर होना चाहिए? –

+0

रंग को ओलेगस उत्तर का उपयोग करने के लिए संभवतः सबसे आसान बदलने के लिए, आप जो भी रंग पसंद करते हैं, उसमें अपना खुद का चित्रण निर्दिष्ट कर सकते हैं। ओथवाइज आप प्रोग्रेसबार के लिए एसडीके स्रोत कोड की प्रतिलिपि बनाना चाहेंगे और इसे अपने स्वयं के ड्रॉइंग के साथ प्रदान कर सकते हैं। –

4
public class Mp3cutterActivity extends Activity { 

    MP3Class mp3obj = null; 
    TextView tv; 
    MP3Class mp3classobj = null; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Context thiscontext = this.getApplicationContext(); 
     mp3classobj = new MP3Class(thiscontext); 
     setContentView(R.layout.main); 

     Button btn = (Button)findViewById(R.id.startbutton); 
     tv = (TextView)findViewById(R.id.textview1); 
     btn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       //show a wait indicator as well as the function that calls walkSdcard 

       try { 
        new SearchSdCard(Mp3cutterActivity.this).execute(); 
        // copyProtector.doCopyProtection(); 
       } catch (Exception e) { 
        System.out.println("in search SD card " + e.getMessage()); 
       } 
      } 

      private void domp3stuff() { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 
} 

class SearchSdCard extends AsyncTask<String, Void, Boolean> { 

    Context context;  

    public ProgressDialog dialog; 

    public SearchSdCard(Activity activity) { 
     this.context = activity; 
    } 

    protected void onPreExecute() { 
     dialog = new ProgressDialog(context); 
     dialog.setMessage("wait for a moment..."); 
     dialog.show(); 
    } 

    @Override 
    protected Boolean doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     boolean retval = true; 
     mp3classobj.searchSdCard(); 
     return retval; 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     // TODO Auto-generated method stub 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
      tv.setText("mp3 cutter is an app which cuts down a chunk of memory \nfrom your sdcard by \ndeleting the .mp3 files and more \nyou were made a BAKRA :-)"); 
      if(!result){  
       tv.setText("error occured !!"); 
      } 
     } 
    } 
    //refer below comment for the MP3class.java file details 
} 
+1

पब्लिक क्लास एमपी 3 क्लास { \t \t निजी संदर्भ mcontext; \t \t सार्वजनिक MP3Class (संदर्भ संदर्भ) { \t \t \t \t mcontext = संदर्भ; \t} \t \t \t सार्वजनिक शून्य searchSdCard() \t \t { \t \t \t \t स्ट्रिंग राज्य = Environment.getExternalStorageState(); \t \t अगर (Environment.MEDIA_MOUNTED.equals (राज्य)) \t \t { \t // मेरी समारोह यहां है यू तुम्हारा \t \t \t \t \t \t \t \t \t \t जोड़ सकते हैं} \t \t \t \t \t} – sudatt

संबंधित मुद्दे