0

First of all, I am bad in Java.

I have an aplication for android that used cordova plugin. And I need to change splash screen. And exactly I need to change spinner on splash screen.

This is part of code on Java that is responsible for this.

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

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

            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
                String colorName = preferences.getString("SplashScreenSpinnerColor", null);
                if(colorName != null){
                    int[][] states = new int[][] {
                        new int[] { android.R.attr.state_enabled}, // enabled
                        new int[] {-android.R.attr.state_enabled}, // disabled
                        new int[] {-android.R.attr.state_checked}, // unchecked
                        new int[] { android.R.attr.state_pressed}  // pressed
                    };
                    int progressBarColor = Color.parseColor(colorName);
                    int[] colors = new int[] {
                        progressBarColor,
                        progressBarColor,
                        progressBarColor,
                        progressBarColor
                    };
                    ColorStateList colorStateList = new ColorStateList(states, colors);
                    progressBar.setIndeterminateTintList(colorStateList);
                }
            }

            centeredLayout.addView(progressBar);

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

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

Here full class https://github.com/apache/cordova-plugin-splashscreen/blob/master/src/android/SplashScreen.java

I think that have to do something like that guy say (I am speak about right answer) Android custom progress bar with .gif file

But I dont know where should imageview be (and animation-list too)

1 Answers1

0

I am did it. I was create drawable and mipmap resources

    AnimationDrawable animationDrawable;

    ImageView mProgressBar = new ImageView(webView.getContext());
    mProgressBar.setImageResource(R.id.myprogressbar);

    mProgressBar.setBackgroundResource(R.drawable.myprogressbar);
    animationDrawable = (AnimationDrawable)mProgressBar.getBackground();
    mProgressBar.setVisibility(View.VISIBLE);
    animationDrawable.start();
    // mProgressBar.setVisibility(View.GONE);
    // animationDrawable.stop();



    centeredLayout.addView(mProgressBar);
    // centeredLayout.addView(progressBar);

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