Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android开发:seekbar倒计时!_Android - Fatal编程技术网

Android开发:seekbar倒计时!

Android开发:seekbar倒计时!,android,Android,是否可能,如果是,如何,如何在用户不做任何操作的情况下从进度100变为1 类似于每.05秒seekbar.setProgress(-=1) 因此,如果用户不做任何操作,seekbar将下降,直到达到1 请告诉我怎么做 谢谢大致如下(注意:可能无法编译): 您可能被迫编写自己的进度条。下面是一个例子: 实现这一点的方法不止一种…类异步扩展异步任务{ class Async extends AsyncTask<Void, Integer, Void>{ ProgressDial

是否可能,如果是,如何,如何在用户不做任何操作的情况下从进度100变为1

类似于每.05秒seekbar.setProgress(-=1) 因此,如果用户不做任何操作,seekbar将下降,直到达到1

请告诉我怎么做


谢谢

大致如下(注意:可能无法编译):


您可能被迫编写自己的进度条。下面是一个例子:

实现这一点的方法不止一种…

类异步扩展异步任务{
class Async extends AsyncTask<Void, Integer, Void>{

    ProgressDialog dialog;

    public Async(Context ctx) {
        dialog = new ProgressDialog(ctx);
        dialog.show();
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        // TODO Auto-generated method stub

        dialog.incrementProgressBy(1);

    super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub
    dialog.dismiss();
    super.onPostExecute(result);
}


@Override
protected Void doInBackground(Void... params) {
    // TODO Auto-generated method stub
    int i=0;
    while (i < 1000) {

        publishProgress(1);
        i++;
    }
    return null;
}
}
进程对话; 公共异步(上下文ctx){ dialog=新进度对话框(ctx); dialog.show(); } @凌驾 受保护的void onProgressUpdate(整型…值){ //TODO自动生成的方法存根 对话框。递增进度(1); super.onProgressUpdate(值); } @凌驾 受保护的void onPostExecute(void结果){ //TODO自动生成的方法存根 dialog.dismise(); super.onPostExecute(结果); } @凌驾 受保护的Void doInBackground(Void…参数){ //TODO自动生成的方法存根 int i=0; 而(i<1000){ 出版进度(1); i++; } 返回null; } }
出现错误,我想不出原因。你从哪里得到密码的。你有链接吗?@carefacerz我从一个正在进行0到100屏幕加载的应用程序中取出了它。我刚把柜台倒过来。请看我在gamedev上的示例:我在Progress View-1下提供了教程,只是因为您没有使用asynctask,而是用一堆代码编写了60行代码runnables@Falmarri你想提供一个更好的例子吗?我想在这里学习,我只是分享了我以前的发现,我认为布莱恩·丹尼在路上有所收获。如果你能帮我写代码的话。谢谢你发这个帖子。为了学习:如果我没有使用ProgressDialog,而是在活动的视图上有一个ProgressBar呢?嗯,这真的没有任何意义。不使用asynctask,您只需调用您的活动。您可以在视图中设置进度条,然后将对话框设置为显示该视图。为了澄清,我的意思是,如果它是这样设置的:我有一个带有进度条的加载屏幕。我弹出堆栈中的内容,将位图、声音等加载到内存中。我是否应该考虑将它转换为异步任务,就像您所说的那样,还是将它与手动线程一样?(我想我应该问一个问题)这取决于你想要什么。如果你在不同的线程中做所有的背景工作,你可能会考虑做手动线程。如果您只是在单个线程中加载所有内容,只需使用asynctask并将其全部放入doInBackground()中,然后在每个函数之后更新进度。
class Async extends AsyncTask<Void, Integer, Void>{

    ProgressDialog dialog;

    public Async(Context ctx) {
        dialog = new ProgressDialog(ctx);
        dialog.show();
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        // TODO Auto-generated method stub

        dialog.incrementProgressBy(1);

    super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(Void result) {
    // TODO Auto-generated method stub
    dialog.dismiss();
    super.onPostExecute(result);
}


@Override
protected Void doInBackground(Void... params) {
    // TODO Auto-generated method stub
    int i=0;
    while (i < 1000) {

        publishProgress(1);
        i++;
    }
    return null;
}
}