运行时图像视图未显示在启动器中 activity
Runtime imageview is not showing in Launcher activity
使用下面的代码,我的背景图片没有显示在我的启动屏幕 activity 中。
我还有一个睡眠时间为三秒的线程,但我只看到白色屏幕作为背景。延迟后,我重定向到另一个 activity (在 OnStart 函数中)。
没有重定向我看到我的图像作为背景。
在我重定向到第二个 activity 之前如何查看我的启动屏幕图像?
在此先感谢您的帮助。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
mAuth = FirebaseAuth.getInstance();
RequestOptions options = new RequestOptions();
options.centerCrop();
RelativeLayout relativeLayout = new RelativeLayout(mContext);
RelativeLayout.LayoutParams relLayoutParam = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setBackgroundResource(R.drawable.launch_screen_image);
relativeLayout.addView(imageView, relLayoutParam);
setContentView(relativeLayout, relLayoutParam);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null && currentUser.getUid() != null
&& currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
Intent i = new Intent(mContext, SocialPage.class);
startActivity(i);
} else {
Intent i = new Intent(mContext, Login.class);
startActivity(i);
}
}
是的,这是因为您没有为不同分辨率的设备管理不同图像尺寸的 dpi。
如果在如图所示的可绘制文件夹中复制所有设备分辨率时只有一张图像,请将图像添加为 nodpi。因此,如果没有该特定分辨率的图像,它将自动从 drawable 的 nodpi 中获取图像。
试试这个,在代码中用注释解释每一行:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Other stuff
//...
//Remove this line ==> imageView.setBackgroundResource(R.drawable.launch_screen_image);
relativeLayout.addView(imageView, relLayoutParam);
setContentView(relativeLayout, relLayoutParam);
//set image resource after setContentView
imageView.setImageResource(R.drawable.launch_screen_image);
//Use handler instead of Thread.sleep()
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//it calls continue() after 3 seconds of delay
continue();
}
},3000);
}
和continue()方法包括这些:
private void continue(){
// Check if user is signed in (non-null) and update UI accordingly.
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null && currentUser.getUid() != null
&& currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
Intent i = new Intent(mContext, SocialPage.class);
startActivity(i);
} else {
Intent i = new Intent(mContext, Login.class);
startActivity(i);
}
}
使用下面的代码,我的背景图片没有显示在我的启动屏幕 activity 中。 我还有一个睡眠时间为三秒的线程,但我只看到白色屏幕作为背景。延迟后,我重定向到另一个 activity (在 OnStart 函数中)。 没有重定向我看到我的图像作为背景。 在我重定向到第二个 activity 之前如何查看我的启动屏幕图像?
在此先感谢您的帮助。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
mAuth = FirebaseAuth.getInstance();
RequestOptions options = new RequestOptions();
options.centerCrop();
RelativeLayout relativeLayout = new RelativeLayout(mContext);
RelativeLayout.LayoutParams relLayoutParam = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
imageView = new ImageView(mContext);
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setBackgroundResource(R.drawable.launch_screen_image);
relativeLayout.addView(imageView, relLayoutParam);
setContentView(relativeLayout, relLayoutParam);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null && currentUser.getUid() != null
&& currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
Intent i = new Intent(mContext, SocialPage.class);
startActivity(i);
} else {
Intent i = new Intent(mContext, Login.class);
startActivity(i);
}
}
是的,这是因为您没有为不同分辨率的设备管理不同图像尺寸的 dpi。
如果在如图所示的可绘制文件夹中复制所有设备分辨率时只有一张图像,请将图像添加为 nodpi。因此,如果没有该特定分辨率的图像,它将自动从 drawable 的 nodpi 中获取图像。
试试这个,在代码中用注释解释每一行:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Other stuff
//...
//Remove this line ==> imageView.setBackgroundResource(R.drawable.launch_screen_image);
relativeLayout.addView(imageView, relLayoutParam);
setContentView(relativeLayout, relLayoutParam);
//set image resource after setContentView
imageView.setImageResource(R.drawable.launch_screen_image);
//Use handler instead of Thread.sleep()
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//it calls continue() after 3 seconds of delay
continue();
}
},3000);
}
和continue()方法包括这些:
private void continue(){
// Check if user is signed in (non-null) and update UI accordingly.
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser != null && currentUser.getUid() != null
&& currentUser.getUid().equals(mPrefs.getString("UID", "DEFAULT"))) {
Intent i = new Intent(mContext, SocialPage.class);
startActivity(i);
} else {
Intent i = new Intent(mContext, Login.class);
startActivity(i);
}
}