gpt4 book ai didi

android - 如何添加真正的加载屏幕

转载 作者:行者123 更新时间:2023-11-30 00:23:45 25 4
gpt4 key购买 nike

我里面有一个 pdf 文件的 android 应用程序。当我在较低配置的设备(galaxy 2 等)上打开我的应用程序时,加载 PDF 文件需要一段时间。我尝试在我的应用程序中添加启动画面,但是在 SplashScreen 之后打开 MainActivity.class 时仍然需要相同的时间。我怎样才能开发一个真正的加载屏幕?它应该在 Main Activity 层之上工作。这是我的代码:

AndroidManifest.xml

        <activity
android:name=".SplashScreen"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity"></activity>
</application>
</manifest>

SplashScreen.class

public class SplashScreen extends AppCompatActivity {
private GifImageView gifImageView;
private ProgressBar progressBar;
Handler handler;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);

gifImageView=(GifImageView)findViewById(R.id.gifview);
progressBar=(ProgressBar)findViewById(R.id.progressbar);
progressBar.setVisibility(progressBar.VISIBLE);

try {
InputStream inputStream = getAssets().open("loading.gif");
byte[] bytes = IOUtils.toByteArray(inputStream);
gifImageView.setBytes(bytes);
gifImageView.startAnimation();
}
catch (IOException ex)
{
}

new Handler().postDelayed(new Runnable() {
@Override
public void run() {

Intent intent = newIntent(SplashScreen.this,MainActivity.class);
SplashScreen.this.startActivity(intent);
SplashScreen.this.finish();
}
},12000);
}
}

我的代码如何解决这个问题?

最佳答案

您是否考虑过为此使用 Async Task?您可以在 MainActivity 中使用异步任务。

例如,您可以执行以下操作:

class PDFLoader extends AsyncTask<Void, Void, Void>
{
protected void onPreExecute (){
super.onPreExecute();
// Here you can instantiate the Progressdialog to show the progress.

}
protected String doInBackground(Void...arg0) {
// here you can go ahead write the reading logic for the PDF
// if it is taking time.
}
protected void onProgressUpdate(Integer...a){
super.onProgressUpdate(a);
// you may or may not use this. This can act as a progress updated based on
// the integer.
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
// Here you can dismiss the progress bar since the read as been done.
}
}

在您的 MainActivity 中这样调用它:

new PDFLoader().execute();

希望对您有所帮助。这只是让您入门的基本结构。更多信息 here .

关于android - 如何添加真正的加载屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45792684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com