Android 应用主题更改时的波纹动画

Hex*_*y21 3 java android


我想添加相同的主题改变动画

在此输入图像描述 (这是电报应用程序)

我有一个radioGroup
在此输入图像描述
在哪里onChangeListener更改主题
我想实现这一点:
当您检查黑暗无线电时,动画将从黑暗无线电的位置开始
如果您检查光,它将从光开始等
如何在andoid应用程序中制作这种动画?
我的完整主题更改代码:

public void chooseTheme(MenuItem item) {
        final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
        final View mView = getLayoutInflater().inflate(R.layout.dialog_theme,null);
        Button btn_cancel = mView.findViewById(R.id.btn_cancel);
        Button btn_okay = mView.findViewById(R.id.btn_okay);
        alert.setView(mView);
        final AlertDialog alertDialog = alert.create();
        alertDialog.setCanceledOnTouchOutside(false);
        final RadioGroup themeGroup = mView.findViewById(R.id.themeGroup);

        btn_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });
        themeGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @SuppressLint("NonConstantResourceId")
            @Override
            public void onCheckedChanged(RadioGroup themeGroup, int i) {
                switch(i) {
                    case R.id.radioLight:
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                        setTheme(R.style.AppTheme);
                        Toast.makeText(getApplicationContext(),"Light mode",Toast.LENGTH_LONG).show();
                        restartApp();
                        break;
                    case R.id.radioDark:
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                        setTheme(R.style.darkTheme);
                        Toast.makeText(getApplicationContext(),"Dark mode", Toast.LENGTH_LONG).show();
                        restartApp();
                        break;
                    case R.id.radioSystem:
                        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
                        Toast.makeText(getApplicationContext(),"System mode", Toast.LENGTH_LONG).show();
                        restartApp();
                        break;
                }
            }
        });
        btn_okay.setOnClickListener(new View.OnClickListener() {
            @SuppressLint("SetTextI18n")
            @Override
            public void onClick(View v) {

                alertDialog.dismiss();
            }
        });
        alertDialog.show();
    }
    public void restartApp() {
        Intent i = new Intent(getApplicationContext(),MainActivity.class);
        startActivity(i);
        finish();
    }
Run Code Online (Sandbox Code Playgroud)

Ima*_*kia 6

检查我的 github 库:https://github.com/imandolatkia/Android-Animated-Theme-Manager

在此库中,您可以创建自定义主题并使用波纹动画动态更改它们,例如您的问题图像

在此输入图像描述