Android小控件:

来源:互联网 发布:淘宝拒签后 退款 编辑:程序博客网 时间:2024/06/16 19:25

1.ToggleButton

 通过一个带有亮度指示同时默认文本为“ON”(TextOn)或“OFF”(TextOff)的按钮显示选中/未选中状态。

在java代码中:

 ToggleButton tb_main_tb1 = (ToggleButton) findViewById(R.id.tb_main_tb1);

tb_main_tb1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //当点击时:
                if(tb_main_tb1.isChecked()){
                    // 切换值 off
                }else{
                  //默认on
                }
            }
        });

2.switch:Switch是一个可以再两种状态切换的开关控件。用户可以拖动来选择,也可以像选择复选框一样点击切换Switch的状态。和第一个的togglebutton一样:有这两个:android:textOff="关"
        android:textOn="开"

当然 你可以定义其样式 背景。

Switch mswitch = (Switch) findViewById(R.id.sh_second_01);

  //添加监听:
        mswitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                 Toast.makeText(SecondActivity.this,"开启开关",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(SecondActivity.this,"关闭开关",Toast.LENGTH_SHORT).show();
                    //simageview.setImageResource(R.drawable.dsf);
                }

在代码中也可以改变该组件的外观
setSwitchTextAppearance(Context context, int resid) 使用指定的资源id设置状态标签上的文字大小,类型,颜色等;
setSwitchTypeface(Typeface tf, int style)  使用指定的字体类型库内的指定类型来设置状态标签上的文字;
setSwitchTypeface(Typeface tf) 使用指定字体类型库内的固有类型来设置状态标签上的文字;
setTextOff(CharSequence textOff) 设置“关闭”状态标签文字;
setTextOn(CharSequence textOn) 设置“开启”状体标签文字;
android:textStyle 和android:typeface 与setSwitchTypeface(Typeface tf)对应;
3.seekbar:android中SeekBar拖动进度条的使用,以及事件监听:
<SeekBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:max="100"   进度条的最大值;
    android:progress="25"  当前进度
    android:id="@+id/sb_main_01"
    />

 SeekBar seekbar = (SeekBar) findViewById(R.id.sb_main_01);
    seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
          @Override
          public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser){
    
           Toast.makeText(ThirdActivity.this,"当前:"+progress,Toast.LENGTH_LONG).show();
         
          }
          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {
              Toast.makeText(ThirdActivity.this,"按住",Toast.LENGTH_LONG).show();
          }
          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
              Toast.makeText(ThirdActivity.this,"放开来",Toast.LENGTH_LONG).show();
          }
      });
4.ratingbar: RatingBar是基于SeekBar(拖动条)和ProgressBar(状态条)的扩展,用星形来显示等级评定,在使用默认RatingBar时,用户可以通过触摸/拖动/按键(比如遥控器)来设置评分

   <RatingBar
        android:id="@+id/rb_forth_rb1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      android:stepSize="0.5"     //表半星半星的评
        />

java代码:

RatingBar ratingBar = (RatingBar) findViewById(R.id.rb_forth_rb1);
        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                Toast.makeText(ForthActivity.this,"评分:"+rating,Toast.LENGTH_SHORT).show();
            }
        });

5.progressbar:ProgressBar是Android的进度条。

  android:progressBarStyle:默认进度条样式

    android:progressBarStyleHorizontal:水平样式

下面给大家 模拟一个 点击下载后就会出现一个进度条

activity_progress界面:

<ProgressBar
        android:id="@+id/pb_five_pb1"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="download"
        android:text="下载" />


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         android:textSize="25sp"
        android:id="@+id/tv_five_tv1"
        />

ProgressActicity界面;

public class ProgressActivity extends AppCompatActivity {
    private ProgressBar progressBar;
    private TextView textView;

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


        progressBar = (ProgressBar) findViewById(R.id.pb_five_pb1);
        textView = (TextView) findViewById(R.id.tv_five_tv1);


    }
    //方法:
        public void download(View view){
            Toast.makeText(FiveActivity.this,"下载中",Toast.LENGTH_SHORT).show();
              new MyThread().start();
        }


        //handler
      Handler handler=new Handler(){
          @Override
          public void handleMessage(Message msg) {
              super.handleMessage(msg);
            int i=msg.what;
              textView.setText(i+"");
          }
      };


//子线程:
        class MyThread extends Thread{
            @Override
            public void run() {
                super.run();
                for (int i = 0; i <=100 ; i++) {

                    progressBar.setProgress(i);
                     handler.sendEmptyMessage(i);
                    try {
                        Random rd=new Random();
                        int n=rd.nextInt(200);
                        if(i==50) {
                          Thread.sleep(500);
                        }else {
                            Thread.sleep(n);
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }}
            }
        }

原创粉丝点击