Как я могу добавить новый / изменить старый SplashScreen в приложении Cordova (ionic 4) - PullRequest
0 голосов
/ 16 ноября 2018

Прежде всего, я плох в Java.

У меня есть приложение для Android, которое использовало плагин Cordova. И мне нужно поменять заставку. И именно мне нужно поменять спиннер на заставке.

Это часть кода на Java, которая отвечает за это.

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

Здесь полный класс https://github.com/apache/cordova-plugin-splashscreen/blob/master/src/android/SplashScreen.java

Я думаю, что должен сделать что-то вроде этого парня (я говорю о правильном ответе) Пользовательский индикатор выполнения Android с файлом .gif

Но я не знаю, где должно быть изображение (и анимация тоже)

1 Ответ

0 голосов
/ 17 ноября 2018

Я сделал это. Я создал ресурсы рисования и mipmap

            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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...