2016-06-25 42 views
6

znalazłem kilka rozwiązań, aby zmienić kolor turbinki na iOS:Cordova ekran powitalny zmiana koloru tarczy na Androidzie

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

... i kilka innych pytań lub więcej mniej związane, ale nic, aby zmienić kolor obracanie ładowanie ekranu powitalnego na Androida. Mój ekran powitalny jest niebieski, a spinner jest lazurowy - nie bardzo widoczny - i chciałbym go zmienić na biały.

Używam cordova-plugin-splashscreen z https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/index.html i buduję swoją aplikację lokalnie przy użyciu cordova build android i udało mi się wdrożyć mój kod na moim urządzeniu. Ale nie ma szczęścia w zmianie koloru tego pokrętła.

myślę kod edytować w platforms/android/src/org/apache/cordova/splashscreen/Splashscreen.java, podczas tworzenia obiektu 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); 
     } 
    }); 
} 

nie wiem programowanie Android (choć znalazłem wiele przykładów, nie jestem pewny, jak zbudować widoki w xml z plików zasobów, etc ... i prawie nie znalazłem dokumentacji opisującej jak dodawać zasoby do projektów cordova).

Używam cordova, więc nie muszę jeszcze tworzyć natywnych aplikacji na Androida, a bez tego szkolenia ta część stała się dość frustrująca - czy ktoś jeszcze znalazł rozwiązanie?

+0

może związane https://developer.android.com/reference/android/widget/ProgressBar.html#setProgressTintList(android.content.res.ColorStateList) - ja po prostu nie wiem jak użyj ColorStateList i jest powiązany z plikami zasobów xml. –

Odpowiedz

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> 

Zapisz w rozciągliwej folderu.

Następnie dodać to w kodzie java

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

Cześć Mohammed, dziękuję bardzo za odpowiedź. Czy mogę wiedzieć, do którego folderu się odwołujesz? 'platformy/android/res'? Jeśli tak, jaką nazwę powinien mieć mój folder, po prostu "drawable"? Edycja: BTW, R nie jest zdefiniowany, Splashscreen.java jest zdefiniowany jako: 'public class SplashScreen rozszerza CordovaPlugin' –

+0

' platform/android/src/org/apache/cordova/splashscreen/SplashScreen.java: 353: error: package R nie istnieje, aby być precyzyjnym –

+2

SUKCES! Dodaj do SplashScreen.java: 'import android.graphics.drawable.Drawable; import android.content.res.Resources; ' ' Zasoby activityRes = cordova.getActivity(). GetResources(); int spinnerResId = activityRes.getIdentifier ("customspinner", "drawable", cordova.getActivity(). GetPackageName()); Drawable customSpinner = activityRes.getDrawable (spinnerResId); ' ' ProgressBar progressBar = new ProgressBar (webView.getContext()); progressBar.setIndeterminateDrawable (customSpinner); ' Nazwa folderu jest w rzeczywistości' drawable' pod 'platformami/android/res'. –

4

dodać tę linię w pliku config.xml projektu.

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