Java 应用程序主题改变时的Ripple类动画 我想添加相同的主题更改动画
(这是电报应用程序) 我有一个Java 应用程序主题改变时的Ripple类动画 我想添加相同的主题更改动画,java,android,Java,Android,(这是电报应用程序) 我有一个radioGroup 其中onChangeListener更改主题 我想做到这一点: 选中暗收音机时,动画将从暗收音机的位置开始 如果您选中灯光,它将从灯光等开始 如何在andoid应用程序中制作此类动画? 我的完整主题更改代码: public void chooseTheme(MenuItem item) { final AlertDialog.Builder alert = new AlertDialog.Builder(MainActivit
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();
}
检查这个github项目:很有趣,我会看的,谢谢!检查这个github项目:很有趣,我会看的,谢谢!