在我的应用程序中,我使用启动画面活动将可拖动文件保存为SD卡或内置内存中的文件。它运行良好,但此活动不显示内容视图。为什么此活动保存文件但不显示内容视图?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
for (int i = 0; i < DRAWABLES.length; i++) {
saveDrawables(
BitmapFactory.decodeResource(getResources(), DRAWABLES[i]),
String.valueOf(i + 2));
}
startActivity(new Intent(SplashActivity.this, MotivateActivity.class));
finish();
}
public void saveDrawables(Bitmap drawable, String drawableName) {
try {
String filename = drawableName + ".jpg";
Log.i("Local filename:", "" + filename);
File dir = new File(Environment.getExternalStorageDirectory()
+ "/MotivateMe/");
File file = new File(dir, filename);
if (!dir.exists()) {
dir.mkdirs();
}
if (file.createNewFile()) {
file.createNewFile();
}
FileOutputStream fileOutput = new FileOutputStream(file);
drawable.compress(Bitmap.CompressFormat.JPEG, 100, fileOutput);
fileOutput.close();
} catch (Exception exception) {
}
}
}
答案 0 :(得分:2)
尝试按照此处的说明操作,否则可能会有所帮助:) 的 http://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/ 强>
答案 1 :(得分:2)
答案 2 :(得分:0)
它不会显示您已保存的文件,因为在活动呈现布局之前,您已在onCreate()
方法中启动了另一项活动。这就是为什么只运行保存图像的代码然后立即启动新活动。
答案 3 :(得分:-1)
修改onCreate代码,如下所示
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
final Handler handler=new Handler();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < DRAWABLES.length; i++) {
saveDrawables(
BitmapFactory.decodeResource(getResources(), DRAWABLES[i]),
String.valueOf(i + 2));
}
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashActivity.this, MotivateActivity.class));
finish();
}
},1000);
}
}).start();
}
由于您正在UI线程中执行操作,因此线程将挂起并且您将看不到启动屏幕。线程完成后,您将调用完成,因此您无法再看到启动屏幕。在上面的代码中,我创建了一个新线程来执行该任务,这意味着活动将正常加载。希望这能解决你的问题。