Cordova飞溅屏幕改变了android上的微调颜色

fro*_*.me 6 android splash-screen android-progressbar cordova

我在iOS上找到了一些改变微调器颜色的解决方案:

如何在iOS phonegap应用程序中显示自定义Splash Screen Spinner(即带有白色的微调器)?

在cordova-plugin-splashscreen中更改Splash Screen Spinner的颜色

...以及其他几个或多或少相关的问题,但没有什么可以改变android上启动画面的加载微调器的颜色.我的闪屏是蓝色的,旋转器是天蓝色的 - 不是真的可见 - 并且想把它变成白色.

我使用的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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我不知道Android应用程序编程(虽然我发现了许多例子,我不熟悉如何在资源文件中构建xml中的视图等等......并且几乎找不到任何描述如何向cordova项目添加资源的文档).

我使用cordova,因此我还没有构建Android本机应用程序,如果没有这种培训,这部分已经变得非常令人沮丧 - 有没有人找到解决方案呢?

Moh*_*n N 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> 
Run Code Online (Sandbox Code Playgroud)

保存在可绘制文件夹中。

然后将其添加到您的java代码中

progressBar.setIndeterminateDrawable(R.drawable.customspinner);
                          or
progressBar.setBackground(R.drawable.customspinner);
Run Code Online (Sandbox Code Playgroud)

  • 成功!添加到 SplashScreen.java: `import android.graphics.drawable.Drawable; import android.content.res.Resources;``资源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.setInminateDrawable(customSpinner);` 文件夹名称确实是 `platforms/android/res` 下的 `drawable`。 (2认同)