2016-06-25 7 views
6

fand ich einige Lösungen, die die Farbe des Spinners auf iOS ändern:Cordova Splash-Screen ändern Spinner Farbe auf android

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

... und ein paar andere Fragen mehr oder weniger verwandt, aber nichts, um die Farbe des Lade-Spinner des Begrüßungsbildschirms auf Android zu ändern. Mein Startbildschirm ist blau und der Spinner ist azur - nicht wirklich sichtbar - und möchte ihn in weiß ändern.

Ich benutze cordova-plugin-splashscreen von https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/index.html und ich baue meine Anwendung lokal mit cordova build android und verwaltet, um meinen Code auf meinem Gerät bereitzustellen. Aber kein Glück, die Farbe dieses Spinners zu ändern.

Ich denke, der Code zu bearbeiten in platforms/android/src/org/apache/cordova/splashscreen/Splashscreen.java ist, wenn das Objekt ProgressBar erstellen:

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); 
     } 
    }); 
} 

Ich weiß nicht, android apps Programmierung (obwohl ich viele Beispiele gefunden, ich bin nicht vertraut mit, wie Ansichten zu bauen in XML aus Ressourcendateien, etc ... und kaum eine Dokumentation gefunden, die beschreibt, wie man Ressourcen zu Cordova-Projekten hinzufügt).

Ich benutze Cordova, so dass ich noch keine android native Apps erstellen muss, und ohne dieses Training ist dieser Teil ziemlich frustrierend geworden - hat jemand schon eine Lösung gefunden?

+0

vielleicht zu https://developer.android.com/reference/android/widget/ProgressBar.html#setProgressTintList(android.content.res.ColorStateList verwendet) - ich weiß einfach nicht, wie man Verwenden Sie ColorStateList, und es bezieht sich auf XML-Ressourcen-Dateien. –

Antwort

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> 

Speichern in ziehbar Ordner.

Dann fügen Sie diese in Ihrem Java-Code

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

Hallo Mohammed, vielen Dank für die Antwort. Darf ich wissen, auf welchen Ordner Sie sich beziehen? Plattformen/Android/Res? Wenn ja, welchen Namen sollte mein Ordner haben, einfach "drawbar"? Edit: BTW, R ist nicht definiert, Splashscreen.java ist definiert als: 'öffentliche Klasse SplashScreen erweitert CordovaPlugin' –

+0

' Plattformen/Android/src/org/Apache/Cordova/Splashscreen/SplashScreen.java: 353: Fehler: Paket R existiert nicht um genau zu sein –

+2

ERFOLG! Zu SplashScreen.java hinzufügen: 'import android.graphics.drawable.Drawable; importieren android.content.res.Resources; ' ' Ressourcen activityRes = cordova.getActivity(). GetResources(); int spinnerResId = activityRes.getIdentifier ("customspinner", "zeichnungsfähig", cordova.getActivity(). GetPackageName()); Drawable customSpinner = activityRes.getDrawable (SpinnerResId); ' ' ProgressBar Fortschrittsbalken = new ProgressBar (webView.getContext()); progressBar.setIndeterminateDrawable (customSpinner); ' Der Ordnername ist in der Tat' Drawable' unter 'platforms/android/res'. –

4

diese Zeile in Ihrem Projekt config.xml-Datei.

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