【发布时间】:2017-07-21 00:57:20
【问题描述】:
在可能的应用程序中,我实现了自定义进度条,但自定义进度条
第 1 期: 第一个问题是进度条只是显示而不是动画,我使用 asynctask 在后台从外部数据库加载大量数据。
第二个问题: 第二个问题是,当我单击链接以加载大量数据时,它会打开另一个显示加载结果的活动。问题是当我按下链接时加载数据需要 7-8 秒,并且在切换另一个屏幕时显示黑屏 3-4 秒如何避免显示黑屏?
意味着当我按下加载数据的链接需要 3-4 秒,在(第一个屏幕)当前屏幕上,然后出现黑屏 3-4 秒然后显示(第二个屏幕)结果,我不知道为什么它正在发生,我该如何避免它。 我希望当我单击链接时,应该执行一个进度条并进入第二个活动,而不显示黑屏。 请问我应该在第一个屏幕(当前屏幕)或第二个屏幕上使用进度对话框吗?或在两个屏幕上?请任何帮助将不胜感激。
这是我的自定义适配器
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
Holder holder=new Holder();
View rowView;
rowView=inflater.inflate(R.layout.nav_navitem,null);
holder.tv=(TextView)rowView.findViewById(R.id.tvlstName);
holder.tv.setTypeface(face);
holder.img=(ImageView)rowView.findViewById(R.id.img);
holder.tv.setText(result[position]);
holder.img.setImageResource(imageId[position]);
rowView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Toast.makeText(context,"you Clicked "+result[position],Toast.LENGTH_LONG).show();
if(result[position]=="کھانوں کی فہرست".trim().toString())
{
new AsyncTask<Void, Void, String>() {
@ Override
protected void onPreExecute ( ) {
//for progress bar
progressDialog = new ProgressDialog(context);
progressDialog.show ( ) ;
progressDialog.setContentView(R.layout.custom_progressdialog);
progressDialog.setCancelable(true);
}
@Override
protected String doInBackground(Void... params) {
//stuff that updates ui
context.startActivity(new Intent(context, SecondActivity.class));
return null ;
}
@Override
protected void onPostExecute(String msg) {
if(progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}.execute(null, null, null);
}
当屏幕切换时SecondActivity.class然后显示黑屏。
这里是 SecondActivity 类的一些相关代码。
public class SecondActivity extends AppCompatActivity {
private SQLiteDatabase sqLiteDatabase;
public static Typeface face;
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
face = Typeface.createFromAsset(getAssets(), "font/asunaskh.ttf");
Toolbar toolbar=(Toolbar)findViewById(R.id.sectoolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
CollapsingToolbarLayout collapsingToolbarLayout=(CollapsingToolbarLayout)
findViewById(R.id.collapsing_toolbar);
collapsingToolbarLayout.setTitle("کھانے کی فہرست");
collapsingToolbarLayout.setCollapsedTitleTypeface(face);
collapsingToolbarLayout.setExpandedTitleTypeface(face);
progressDialog = new ProgressDialog(SecondActivity.this);
progressDialog.setMessage("Loading");
progressDialog.setCancelable(true);
new AsyncTask<Void, Void, String>() {
@ Override
protected void onPreExecute ( ) {
progressDialog.show ( ) ;
}
@Override
protected String doInBackground(Void... params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//stuff that updates ui
show_card();
}
});
return null ;
}
@Override
protected void onPostExecute(String msg) {
if(progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
}.execute(null, null, null);
}
//show_card() method goes here
public void show_card(){....}
这是一个自定义进度条,当我单击链接时在切换 SecondActivity 之前显示 Custom Progress Bar
这是当活动从当前活动切换到另一个活动时进度条的第二个屏幕截图(黑屏)。 Progress Bar Screen Shot
【问题讨论】:
标签: android android-asynctask android-progressbar