2016-06-25 17 views
6

पर रंग मैं कुछ समाधान पाया iOS पर स्पिनर का रंग बदलने के:Cordova स्प्लैश स्क्रीन परिवर्तन स्पिनर एंड्रॉयड

How to show custom Splash Screen Spinner (i.e spinner with white color) in iOS phonegap app?

Change Color of Splash Screen Spinner in cordova-plugin-splashscreen

... और अन्य प्रश्न के एक जोड़े को और अधिक या कम संबंधित, लेकिन एंड्रॉइड पर स्प्लैश स्क्रीन के लोडिंग स्पिनर के रंग को बदलने के लिए कुछ भी नहीं। मेरी स्प्लैश स्क्रीन नीली है, और स्पिनर अजीब है - वास्तव में दिखाई नहीं दे रहा है - और इसे सफेद में बदलना चाहता हूं।

मैं cordova-plugin-splashscreenhttps://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/index.html से उपयोग कर रहा हूं और मैं cordova build android का उपयोग करके स्थानीय रूप से अपना ऐप बना रहा हूं, और मेरे डिवाइस पर अपना कोड तैनात करने में कामयाब रहा। लेकिन उस स्पिनर के रंग को बदलने के साथ कोई भाग्य नहीं है।

मुझे लगता है कि संपादित करने के लिए कोड platforms/android/src/org/apache/cordova/splashscreen/Splashscreen.java में, जब ProgressBar वस्तु बनाने है:

private void spinnerStart() { 
    cordova.getActivity().runOnUiThread(new Runnable() { 
     public void run() { 
      spinnerStop(); 

      spinnerDialog = new ProgressDialog(webView.getContext()); 
      spinnerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
       public void onCancel(DialogInterface dialog) { 
        spinnerDialog = null; 
       } 
      }); 

      spinnerDialog.setCancelable(false); 
      spinnerDialog.setIndeterminate(true); 

      RelativeLayout centeredLayout = new RelativeLayout(cordova.getActivity()); 
      centeredLayout.setGravity(Gravity.CENTER); 
      centeredLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

      /* The following line here: */ 
      ProgressBar progressBar = new ProgressBar(webView.getContext()); 
      RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
      layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
      progressBar.setLayoutParams(layoutParams); 

      centeredLayout.addView(progressBar); 

      spinnerDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); 
      spinnerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

      spinnerDialog.show(); 
      spinnerDialog.setContentView(centeredLayout); 
     } 
    }); 
} 

मैं एंड्रॉयड क्षुधा प्रोग्रामिंग पता नहीं है (हालांकि मैं कई उदाहरण मिल गया, मैं कैसे विचारों का निर्माण करने के साथ परिचित नहीं हूँ संसाधन फ़ाइलों, आदि से एक्सएमएल में ... और शायद ही कोई दस्तावेज मिला जो कि कॉर्डोवा परियोजनाओं में संसाधनों को जोड़ने का वर्णन करता है)।

मैं कॉर्डोबा उपयोग करती हैं इसलिए है कि मैं बस अभी तक एंड्रॉयड देशी एप्लिकेशन बनाने के लिए की जरूरत नहीं है, और कहा कि प्रशिक्षण के बिना, इस हिस्से बहुत निराशा होती बन गया है - किसी को भी अभी तक एक समाधान मिल गया है?

+0

शायद https://developer.android.com/reference/android/widget/ProgressBar.html#setProgressTintList(android.content.res.ColorStateList से संबंधित) - मैं सिर्फ कैसे पता नहीं है ColorStateList का उपयोग करें और यह xml संसाधन फ़ाइलों से संबंधित है। –

उत्तर

4

customspinner.xml

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" 
    android:toDegrees="360"> 
    <shape android:shape="ring" android:innerRadiusRatio="3" 
     android:thicknessRatio="8" android:useLevel="false"> 
     <size android:width="76dip" android:height="76dip" /> 
     <gradient android:type="sweep" android:useLevel="false" 
      android:startColor="yourcolor" 
      android:endColor="yourcolor" 
      android:angle="0" 
      /> 
    </shape> 
</rotate> 

drawable फ़ोल्डर में सहेजें।

फिर अपने जावा कोड में इस ऐड

progressBar.setIndeterminateDrawable(R.drawable.customspinner); 
          or 
progressBar.setBackground(R.drawable.customspinner); 
+0

हाय मोहम्मद, उत्तर के लिए बहुत बहुत धन्यवाद। क्या मैं जान सकता हूं कि आप किस फ़ोल्डर का जिक्र कर रहे हैं? प्लेटफॉर्म/एंड्रॉइड/रेस'? यदि हां, तो मेरे फ़ोल्डर में कौन सा नाम होना चाहिए, बस "खींचने योग्य"? संपादित करें: Btw, आर परिभाषित नहीं है, Splashscreen.java परिभाषित किया गया है के रूप में: 'सार्वजनिक वर्ग SplashScreen फैली CordovaPlugin' –

+0

' प्लेटफार्मों/एंड्रॉयड/src/org/अपाचे/कॉर्डोबा/splashscreen/SplashScreen.java: 353: त्रुटि: पैकेज आर सटीक –

+2

सफलता होने के लिए मौजूद नहीं है! SplashScreen.java में जोड़ें: 'आयात android.graphics.drawable.Drawable; आयात android.content.res.Resources;। '' संसाधन activityRes = cordova.getActivity() getResources(); int spinnerResId = activityRes.getIdentifier ("customspinner", "drawable", cordova.getActivity()। GetPackageName()); Drawable customSpinner = activityRes.getDrawable (spinnerResId); ' ' ProgressBar Progressbar = नए ProgressBar (webView.getContext()); progressBar.setIndeterminateDrawable (customSpinner); ' फ़ोल्डर का नाम वास्तव में' 'के तहत प्लेटफार्मों/एंड्रॉयड/res' drawable' है। –

4

अपनी परियोजना config.xml फ़ाइल में इस लाइन को जोड़ने।

<preference name="TopActivityIndicator" value="white"/>

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