Oncreate() 中的动画不会在 android 中停止
Animation in Oncreate() not stopping in android
想要做的事情:我想在应用程序启动时进行 Internet 检查,如果没有找到,则在单击“肯定”按钮时应该转到 wifi 设置,如果用户打开wifi 然后在返回应用程序时我希望关闭对话框并启动动画,否则它会再次显示 Internet 对话框。
我做了什么:我已经在 OnResume() 中放置了 Internet 检查对话框,在 OnCreate 中放置了动画代码。
问题是:在我的应用程序启动时,当它检查 Wifi 连接时,它也会 运行 Oncreate 中的所有动画代码( ) 连续性而不是 运行 仅在 Internet 连接后
OnCreate 代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.grow_from_middle, R.anim.shrink_to_middle);
setContentView(R.layout.activity_csplogin);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
mobileEdit = (EditText) findViewById(R.id.mobileText);
nameEdit = (EditText) findViewById(R.id.nameText);
employerEdit = (EditText) findViewById(R.id.employerText);
noEmployerCheckbox = (CheckBox) findViewById(R.id.noEmployercheckboxid);
employerSpinner = (Spinner) findViewById(R.id.employer_spinner_id);
noEmployerLayout = (LinearLayout) findViewById(R.id.linearlayoutCheckbox);
init();
if (myPrefs.getOrgValidated() == false) {
new OrganisationValidationTask(CSPLoginActivity.this).execute();
}
isdeviceValidated = myPrefs.getIsDeviceValidated();
isLoggedIn = myPrefs.getIsLogIn();
if (isdeviceValidated) {
startLoginActivity();
}
final RelativeLayout LoginBox = (RelativeLayout) findViewById(R.id.LoginBox);
LoginBox.setVisibility(View.GONE);
Animation animTranslate = AnimationUtils.loadAnimation(CSPLoginActivity.this, R.anim.translate);
animTranslate.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
LoginBox.setVisibility(View.VISIBLE);
Animation animFade = AnimationUtils.loadAnimation(CSPLoginActivity.this, R.anim.fade);
LoginBox.startAnimation(animFade);
showSingleChoice();
}
});
ImageView imgLogo = (ImageView) findViewById(R.id.imageView1);
imgLogo.startAnimation(animTranslate);
isdeviceValidated = myPrefs.getIsDeviceValidated();
isLoggedIn = myPrefs.getIsLogIn();
if (!isLoggedIn) {
// display login screen
if (Utils.isNetworkConnected(this)) {
if (isdeviceValidated) {
// to display user details
// displayUserDetails();
if (!isMyServiceRunning()) {
Utils.startLocationPollerAndWakeupService(this);
}
}
}
} else if (isLoggedIn && isdeviceValidated) {
// skip login screen
if (!isMyServiceRunning()) {
Utils.startLocationPollerAndWakeupService(this);
}
startLoginActivity();
}
}
恢复
@Override
protected void onResume() {
super.onResume();
if(Utils.isNetworkConnected(this)) {
}else{
showWifiAlert();
}
}
正在检查 Internet 连接对话框:
private void showWifiAlert(){
new MaterialDialog.Builder(CSPLoginActivity.this)
.content("Unable to validate device as Internet not available")
.title("Alert !")
.positiveText("OK")
.negativeText("Cancel")
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNegative(MaterialDialog dialog) {
finish();
}
@Override
public void onPositive(MaterialDialog dialog) {
dialog.dismiss();
startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
}
})
.cancelable(false)
.show();
}
请帮助,如何实现我想做的事情。
尝试将 onResume 方法代码替换如下:
@Override
protected void onResume() {
super.onResume();
if(Utils.isNetworkConnected(this)) {
imgLogo.startAnimation(animTranslate);
}else{
showWifiAlert();
}
}
让我知道这是否适合你。
想要做的事情:我想在应用程序启动时进行 Internet 检查,如果没有找到,则在单击“肯定”按钮时应该转到 wifi 设置,如果用户打开wifi 然后在返回应用程序时我希望关闭对话框并启动动画,否则它会再次显示 Internet 对话框。
我做了什么:我已经在 OnResume() 中放置了 Internet 检查对话框,在 OnCreate 中放置了动画代码。
问题是:在我的应用程序启动时,当它检查 Wifi 连接时,它也会 运行 Oncreate 中的所有动画代码( ) 连续性而不是 运行 仅在 Internet 连接后
OnCreate 代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.grow_from_middle, R.anim.shrink_to_middle);
setContentView(R.layout.activity_csplogin);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
mobileEdit = (EditText) findViewById(R.id.mobileText);
nameEdit = (EditText) findViewById(R.id.nameText);
employerEdit = (EditText) findViewById(R.id.employerText);
noEmployerCheckbox = (CheckBox) findViewById(R.id.noEmployercheckboxid);
employerSpinner = (Spinner) findViewById(R.id.employer_spinner_id);
noEmployerLayout = (LinearLayout) findViewById(R.id.linearlayoutCheckbox);
init();
if (myPrefs.getOrgValidated() == false) {
new OrganisationValidationTask(CSPLoginActivity.this).execute();
}
isdeviceValidated = myPrefs.getIsDeviceValidated();
isLoggedIn = myPrefs.getIsLogIn();
if (isdeviceValidated) {
startLoginActivity();
}
final RelativeLayout LoginBox = (RelativeLayout) findViewById(R.id.LoginBox);
LoginBox.setVisibility(View.GONE);
Animation animTranslate = AnimationUtils.loadAnimation(CSPLoginActivity.this, R.anim.translate);
animTranslate.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation arg0) {
}
@Override
public void onAnimationRepeat(Animation arg0) {
}
@Override
public void onAnimationEnd(Animation arg0) {
LoginBox.setVisibility(View.VISIBLE);
Animation animFade = AnimationUtils.loadAnimation(CSPLoginActivity.this, R.anim.fade);
LoginBox.startAnimation(animFade);
showSingleChoice();
}
});
ImageView imgLogo = (ImageView) findViewById(R.id.imageView1);
imgLogo.startAnimation(animTranslate);
isdeviceValidated = myPrefs.getIsDeviceValidated();
isLoggedIn = myPrefs.getIsLogIn();
if (!isLoggedIn) {
// display login screen
if (Utils.isNetworkConnected(this)) {
if (isdeviceValidated) {
// to display user details
// displayUserDetails();
if (!isMyServiceRunning()) {
Utils.startLocationPollerAndWakeupService(this);
}
}
}
} else if (isLoggedIn && isdeviceValidated) {
// skip login screen
if (!isMyServiceRunning()) {
Utils.startLocationPollerAndWakeupService(this);
}
startLoginActivity();
}
}
恢复
@Override
protected void onResume() {
super.onResume();
if(Utils.isNetworkConnected(this)) {
}else{
showWifiAlert();
}
}
正在检查 Internet 连接对话框:
private void showWifiAlert(){
new MaterialDialog.Builder(CSPLoginActivity.this)
.content("Unable to validate device as Internet not available")
.title("Alert !")
.positiveText("OK")
.negativeText("Cancel")
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onNegative(MaterialDialog dialog) {
finish();
}
@Override
public void onPositive(MaterialDialog dialog) {
dialog.dismiss();
startActivity(new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
}
})
.cancelable(false)
.show();
}
请帮助,如何实现我想做的事情。
尝试将 onResume 方法代码替换如下:
@Override
protected void onResume() {
super.onResume();
if(Utils.isNetworkConnected(this)) {
imgLogo.startAnimation(animTranslate);
}else{
showWifiAlert();
}
}
让我知道这是否适合你。