设备旋转的ImageView可见性问题

时间:2019-03-31 09:53:21

标签: java android

设备旋转时,我想设置ImageView的可见性。 我不知道下面两个例子的区别。 我想知道onConfigurationChanged是否无法正常工作或是否存在其他问题。

1)正常代码

>

package com.facebookexam.www.facebookexam;    
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle;
import android.content.res.Configuration;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    iv=(ImageView)findViewById(R.id.MainLogoIV);
    updateLayout(getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE);
}
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    updateLayout(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE);
}

private void updateLayout(boolean isLandscape) {
    if (isLandscape) {
        iv.setVisibility(View.GONE);
    } else {
        iv.setVisibility(View.VISIBLE);
    }
}

}
  1. 异常代码

打包com.facebookexam.www.facebookexam;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.res.Configuration;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv=(ImageView)findViewById(R.id.MainLogoIV);
        iv.setVisibility(View.VISIBLE);
    }
    public void onConfigurationChanged(Configuration newConfig) {

        super.onConfigurationChanged(newConfig);
        iv.setVisibility(View.GONE);
    }

}

1 个答案:

答案 0 :(得分:1)

这里没有“异常”。

首先,如果方向为“横向”,则使ImageView消失。 [if(...)]

在第二种情况下,您正在使ImageView完全消失。 [无条件操作]。