我正在开发我的第一个Android应用程序,我需要显示ProgressDialog,而后台任务,在这种情况下只是服务器上的http调用.我对此进行了一些研究,并且已经检查了与此主题相关的其他线程.
http://developer.android.com/reference/android/os/AsyncTask.html
Android显示ProgressDialog,直到活动UI完成加载
http://android-developers.blogspot.com/2009/05/painless-threading.html
其中包括.
比起我要编写一些代码:
1)在My Activity中,我声明一个变量为ProgressDialog类型
public class LoginActivity extends Activity {
public static final String TAG = "LoginActivity";
protected ProgressDialog progressDialog;
...
Run Code Online (Sandbox Code Playgroud)
2)我还编写了一个内部类来根据需要扩展AsyncTask,这里我在doInBackGround中调用静态方法,它实际上向服务器发出POST http请求,在服务器端我已经阻止服务器响应20s验证进度对话框.
class EfetuaLogin extends AsyncTask<Object, Void, String> {
private final static String TAG = "LoginActivity.EfetuaLogin";
@Override
protected void onPreExecute()
{
Log.d(TAG, "Executando onPreExecute de EfetuaLogin");
}
@SuppressWarnings("unchecked")
@Override
protected String doInBackground(Object... parametros) {
Log.d(TAG, "Executando doInBackground de EfetuaLogin");
Object[] params = parametros;
HttpClient httpClient = (HttpClient) params[0];
List<NameValuePair> listaParametros = …Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序,它启动,从网络加载xml提要,您可以浏览新闻列表,然后阅读所选新闻项目的详细信息.我想要做的是有一个启动画面,这意味着一旦你点击应用程序,它应该显示一个图像(在我的情况下的应用程序名称),然后只有在它们加载后显示新闻列表.
我读到了类似的(我认为)问题,通常人们会说使用FrameLayout,但我无法解决它.我不确定这是否可以在第一个启动的活动中完成,也许我应该只在一个活动中显示这个启动图像,然后才调用活动显示我的新闻列表?
我知道在iPhone上你可以在开发时在应用程序设置中设置启动画面,很高兴在android的应用程序清单中有这个功能...
此按钮显示在我的开始活动中.按下它之后,将启动一个新活动,但这需要一些时间,因为初始化该新活动会从Internet收集一些数据.这工作一半.显示进度拨号但进度轮未旋转.
有人能告诉我为什么会这样吗?
Button b4 = (Button) findViewById(R.id.Button01);
b4.setOnClickListener(new View.OnClickListener() {
public void onClick (View view) {
final ProgressDialog pd = ProgressDialog.show(pak.this,
"", "Working..", true);
new Thread(new Runnable(){
public void run(){
Intent intent = new Intent();
intent.setClassName("sxe.pak", "sxe.pak.List");
startActivity(intent);
pd.dismiss();
}
}).start();
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我有个问题.我需要从一个活动转到另一个活动.我的第二个活动有一个很大的xml布局,有很多元素(我说的是大约四百个aprox.),然后需要几秒钟(太多)才能显示第二个Activity.
如何在两个活动之间显示"进度"对话框?
我正在尝试使用后台任务来执行此操作.
我的活动A中有这个方法:
private void goToYear() {
Intent intent = new Intent();
intent.setClass (getBaseContext(), YearActivity.class);
startActivity( intent);
}
Run Code Online (Sandbox Code Playgroud)
在我的活动B中:
public class YearActivity extends Activity {
private String TAG = "YearActivity ::";
private ProgressDialog pd = null;
@Override
public void onCreate( Bundle savedInstanceState) {
super.onCreate( savedInstanceState);
// Show the ProgressDialog on this thread
this.pd = ProgressDialog.show(this, "Working...", "Calculating the screen...", true, false);
// Start a new thread that will download all the data
new MakeYearTask().execute();
}
private void initCalendar () …Run Code Online (Sandbox Code Playgroud) 我希望在应用程序启动前显示徽标几秒钟,并且菜单可见.当它消失时我也想要使用一些.我应该创建一个新活动吗?我可以在布局中设置它吗?
我正在开发一个应用程序,当它从onCreate点加载时,我只是有一个黑屏(直到应用程序站稳脚跟).看看其他应用程序,他们有一个公司徽标或酷炫的图像弹出几秒钟,有人可以告诉我该怎么做呢?
如果您可以将其设置为显示最短时间?
这个例子非常简单:我想通过显示文本(canvas.drawText())让用户知道应用程序正在做什么.然后,我的第一条消息出现,但不是其他消息.我的意思是,我有一个"setText"方法,但它没有更新.
onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(splash); // splash is the view class
loadResources();
splash.setText("this");
boundWebService();
splash.setText("that"):
etc();
splash.setText("so on");
}
Run Code Online (Sandbox Code Playgroud)
视图的文本绘图只需在onDraw();中执行drawText,因此setText会更改文本但不会显示它.
有人建议我用SurfaceView替换视图,但是对于几个更新来说会有很多麻烦,所以...我怎么能在运行时以动态更新视图?
它应该很简单,只显示2秒的文本,然后主线程做他的东西,然后更新文本...
谢谢!
更新:
我尝试实现handler.onPost(),但是又重复了同样的故事.我给你看一下代码:
public class ThreadViewTestActivity extends Activity {
Thread t;
Splash splash;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
splash = new Splash(this);
t = new Thread(splash);
t.start();
splash.setTextow("OA");
try { Thread.sleep(4000); } catch (InterruptedException e) { }
splash.setTextow("LALA");
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public class Splash implements …Run Code Online (Sandbox Code Playgroud)