亲宝软件园·资讯

展开

Android studio选择器与进度条

Be your bubble 人气:0

日期选择器

public void onclick(View v){
        Calendar calendar=Calendar.getInstance();
        new DatePickerDialog( this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                String text = "你选择了:" + year + "年" + (month + 1) + "月" + dayOfMonth + "日";
                Toast.makeText( MainActivity.this, text, Toast.LENGTH_SHORT ).show();
            }
        }
        ,calendar.get(Calendar.YEAR)
        ,calendar.get(Calendar.MONTH)
        ,calendar.get(Calendar.DAY_OF_MONTH)).show();
    }

注意:此按钮响应需要在按钮布局文件里面加一句android:onClick="onclick"

时间选择器

ProgressDialog一般用于表示当前操作比较耗时间,让用户耐心等待

 public void onclick(View v){
        Calendar calendar=Calendar.getInstance();
        new TimePickerDialog( this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                String text="你选择了"+hourOfDay+"时"+minute+"分";
                Toast.makeText( MainActivity.this, text, Toast.LENGTH_SHORT ).show();
            }
        }
        ,calendar.get(Calendar.HOUR_OF_DAY)
        ,calendar.get(Calendar.MINUTE),true).show();
    }

进度条

1、圆圈

.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <Button
        android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="跳转"
        android:onClick="onclick"/>
</LinearLayout>

.java:

package com.example.catalogin;

        import android.app.ProgressDialog;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    ProgressDialog pd;
    public void showprogress(){
        pd=new ProgressDialog(this);
        pd.setTitle( "任务进行中" );
        pd.setMessage( "请稍后..." );
        pd.setCancelable( true );
        pd.setProgressStyle( ProgressDialog.STYLE_SPINNER );
        pd.show();
    }
    public void onclick(View v){//按钮的一种方法
        showprogress();
    }
}

做一个小练习来模拟一下(可用在刷新列表啥的)

.java代码改为:

package com.example.catalogin;

        import android.app.ProgressDialog;
        import android.os.Handler;
        import android.os.Message;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    ProgressDialog pd;
    public void showprogress(){
        pd=new ProgressDialog(this);
        pd.setTitle( "任务进行中" );
        pd.setMessage( "请稍后..." );
        pd.setCancelable( true );
        pd.setProgressStyle( ProgressDialog.STYLE_SPINNER );
        pd.show();
    }
    Handler handler=new Handler(  ){
        @Override
        public void handleMessage(Message msg) {//在主线程(UI)
            pd.dismiss();//发送完关闭
        }
    };
    public void onclick(View v){
        showprogress();
        //新建一个子线程
        new Thread(){//new Thread 说明并行进行,在小路跑
            public void run(){
                for(int i=0;i<=3;i++){
                    try{
                        Thread.sleep( 1000 );
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                handler.sendEmptyMessage( 0 );//向主干道发送消息,子线程
            }
        }.start();
    }
}

效果为自己跑完三秒之后就自动消失

2、水平

.java 文件代码改为:

package com.example.catalogin;

        import android.app.ProgressDialog;
        import android.os.Handler;
        import android.os.Message;
        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    ProgressDialog pd;
    public void showprogress(){
        pd=new ProgressDialog(this);
        pd.setTitle( "任务进行中" );
        pd.setMessage( "请稍后..." );
        pd.setCancelable( true );
        pd.setProgressStyle( ProgressDialog.STYLE_HORIZONTAL);//风格
        pd.setMax(100);//下载数量啥的
        pd.show();
    }
    Handler handler=new Handler(  ){//接收
        @Override
        public void handleMessage(Message msg) {//在主线程(UI)
            if(msg.what==0)//接受的信息判断,0结束
                pd.dismiss();//发送完关闭
            else if( msg.what==1){
               pd.setProgress( msg.arg1 );//接受的信息判断如果是1,说明进度没结束,加一
            }
        }
    };

    public void onclick(View v){
        showprogress();
        //新建一个子线程
        new Thread(){//new Thread 说明并行进行,在小路跑
            public void run(){
                for(int i=0;i<=100;i++){
                    try{
                        Thread.sleep( 100 );
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Message mag=Message.obtain();
                    mag.arg1=i;//增长的进度丢进去
                    mag.what=1;//中间发送消息都是一,直到0结束,所以不结束
                    handler.sendMessage( mag );//增长的信息每次发送一次
                }
                handler.sendEmptyMessage( 0 );//向主干道发送消息,子线程
            }
        }.start();
    }
}

加载全部内容

相关教程
猜你喜欢
用户评论