zoukankan      html  css  js  c++  java
  • 7.Android之评分条RatingBar和拖动条SeekBar学习

    评分条RatingBar和拖动条SeekBar很常见,今天来学习下。

    (1)RatingBar评分条

    如图:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context="com.example.ratingbar.MainActivity" >
    10 
    11     <RatingBar
    12         android:id="@+id/ratingBar1"
    13         android:layout_width="wrap_content"
    14         android:layout_height="wrap_content"
    15         android:layout_alignParentLeft="true"
    16         android:layout_alignParentTop="true"
    17         android:layout_marginLeft="22dp"
    18         android:layout_marginTop="25dp" />
    19 
    20 </RelativeLayout>

    RatingBar监听事件:public void setOnRatingBarChangeListener (RatingBar.OnRatingBarChangeListener listener)

    (2)拖动他SeekBar使用

    首先从工具中拖入一个SeekBar和两个TextView,如图:

    代码如下:

     1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:paddingBottom="@dimen/activity_vertical_margin"
     6     android:paddingLeft="@dimen/activity_horizontal_margin"
     7     android:paddingRight="@dimen/activity_horizontal_margin"
     8     android:paddingTop="@dimen/activity_vertical_margin"
     9     tools:context="com.example.ratingbar.MainActivity" >
    10 
    11     <SeekBar
    12         android:id="@+id/seekBar1"
    13         android:max="100"
    14         android:progress="50"
    15         android:secondaryProgress="75"
    16         android:layout_width="match_parent"
    17         android:layout_height="wrap_content"
    18         android:layout_alignParentLeft="true"
    19         android:layout_alignParentTop="true"
    20         android:layout_marginTop="35dp" />
    21 
    22     <TextView
    23         android:id="@+id/info1"
    24         android:layout_width="wrap_content"
    25         android:layout_height="wrap_content"
    26         android:layout_alignLeft="@+id/seekBar1"
    27         android:layout_below="@+id/seekBar1"
    28         android:layout_marginTop="24dp"/>
    29 
    30     <TextView
    31         android:id="@+id/info2"
    32         android:layout_width="wrap_content"
    33         android:layout_height="wrap_content"
    34         android:layout_alignLeft="@+id/info1"
    35         android:layout_below="@+id/info1"
    36         android:layout_marginTop="32dp"/>
    37 
    38 </RelativeLayout>

    然后我们实现OnSeekBarChangeListener接口:public class MainActivity extends Activity implements OnSeekBarChangeListener{...} ,此接口共需要监听三个事件,分别是:
                     数值改变(onProgressChanged
                     开始拖动(onStartTrackingTouch
                     停止拖动(onStopTrackingTouch

    完整代码如下:

     1 package com.example.ratingbar;
     2 
     3 import android.app.Activity;
     4 import android.os.Bundle;
     5 import android.view.Menu;
     6 import android.view.MenuItem;
     7 import android.widget.SeekBar;
     8 import android.widget.SeekBar.OnSeekBarChangeListener;
     9 import android.widget.TextView;
    10 
    11 //实现OnSeekBarChangeListener接口
    12 public class MainActivity extends Activity implements OnSeekBarChangeListener {
    13 
    14     private SeekBar sbVolumer=null;  
    15     private TextView info1=null;  
    16     private TextView info2=null;  
    17     
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         setContentView(R.layout.activity_main);
    22         
    23         sbVolumer = (SeekBar) findViewById(R.id.seekBar1);
    24         sbVolumer.setOnSeekBarChangeListener(this);
    25         info1 = (TextView) findViewById(R.id.info1);
    26         info2 = (TextView) findViewById(R.id.info2);
    27     }
    28 
    29     @Override
    30     public boolean onCreateOptionsMenu(Menu menu) {
    31         // Inflate the menu; this adds items to the action bar if it is present.
    32         getMenuInflater().inflate(R.menu.main, menu);
    33         return true;
    34     }
    35 
    36     @Override
    37     public boolean onOptionsItemSelected(MenuItem item) {
    38         // Handle action bar item clicks here. The action bar will
    39         // automatically handle clicks on the Home/Up button, so long
    40         // as you specify a parent activity in AndroidManifest.xml.
    41         int id = item.getItemId();
    42         if (id == R.id.action_settings) {
    43             return true;
    44         }
    45         return super.onOptionsItemSelected(item);
    46     }
    47 
    48     @Override
    49     public void onProgressChanged(SeekBar seekBar, int progress,
    50             boolean fromUser) {
    51          
    52         info1.setText("当前值: " + progress);
    53     }
    54 
    55     @Override
    56     public void onStartTrackingTouch(SeekBar seekBar) {
    57          
    58         info2.setText("正在改变当前值");
    59     }
    60 
    61     @Override
    62     public void onStopTrackingTouch(SeekBar seekBar) {
    63         info2.setText("停止拖动");    
    64     }
    65 }

    运行效果:

             

  • 相关阅读:
    序列模型
    conda安装库时报错Solving environment: failed with initial frozen solve. Retrying with flexible solve.
    OverflowError: mktime argument out of range问题
    Supervised ML-1
    CKE(Collaborative Knowledge Base Embedding for Recommender Systems)笔记
    Word2vec学习
    BERT
    DeText: A Deep Text Ranking Framework with BERT论文笔记
    解决Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.(IDEA连接mysql数据库)
    django-settings配置介绍
  • 原文地址:https://www.cnblogs.com/benchao/p/5073165.html
Copyright © 2011-2022 走看看