首页 > 其他分享 >Android开发-Android常用组件-SeekBar拖动条

Android开发-Android常用组件-SeekBar拖动条

时间:2023-04-03 15:33:15浏览次数:41  
标签:Toast SeekBar void 拖动 sb import Android android

4.9  SeekBar拖动条

android:max

滑动条的最大值

android:progress

滑动条的当前值

android:secondaryProgress

二级滑动条的进度

android:thumb

滑块的drawable

 

接着要说下SeekBar的事件了,SeekBar.OnSeekBarChangeListener 我们只需重写三个对应的方法:

onProgressChanged

进度发生改变时会触发

onStartTrackingTouch

按住SeekBar时会触发

onStopTrackingTouch

放开SeekBar时触发

SeekBar定制

1. 滑块状态Drawable:sb_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@mipmap/weixin"/>
    <item android:state_pressed="false" android:drawable="@mipmap/wode"/>
</selector>

 

2. 条形栏Bar的Drawable:sb_bar.xml

这里用到一个layer-list的drawable资源!其实就是层叠图片,依次是:背景,二级进度条,当前进度:

 

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <solid android:color="@color/purple_200"/>
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="@color/dark_gray"/>
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="@color/black"/>
            </shape>
        </clip>
    </item>
</layer-list>

 

3. 然后布局引入SeekBar后,设置下progressDrawable与thumb即可

 seek_bar.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:gravity="center"
    android:orientation="vertical">
    <SeekBar
        android:id="@+id/sb_normal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/txt_cur"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:textSize="30sp"/>

    <SeekBar
        android:id="@+id/sb_custom"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxHeight="5dp"
        android:minHeight="5dp"
        android:progressDrawable="@drawable/sb_bar"
        android:thumb="@drawable/sb_thumb"/>

</LinearLayout>

 SeekBarActivity.java:

package com.example.myapplication;

import android.content.Context;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class SeekBarActivity extends AppCompatActivity {
    private SeekBar sb_normal,sb_custom;
    private TextView txt_cur;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seek_bar);
        mContext = this;
        sb_normal = (SeekBar) findViewById(R.id.sb_normal);
        sb_custom = (SeekBar) findViewById(R.id.sb_custom);
        txt_cur = (TextView) findViewById(R.id.txt_cur);
        sb_normal.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                txt_cur.setText("当前进度值:"+progress+"/100");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext,"触碰SeekBar",Toast.LENGTH_LONG).show();
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Toast.makeText(mContext,"放开SeekBar",Toast.LENGTH_LONG).show();
            }
        });
    }
}

AndroidManifest.java:

 

 启动测试:

 

 

 

   

标签:Toast,SeekBar,void,拖动,sb,import,Android,android
From: https://www.cnblogs.com/lysboke/p/17277101.html

相关文章

  • 成品直播源码推荐,Android 禁止下拉菜单栏
    成品直播源码推荐,Android禁止下拉菜单栏1.屏蔽非锁屏下的下拉菜单栏这种Android系统其实是提供了方法的,只不过是隐藏的,只给系统应用,也就是用mk编译的apk使用。如果第三方应用想要使用,或者Androidstuido编译方式的想要使用。则可以使用反射。 /** *Allowsanapptoco......
  • 搭建直播平台,android 如何得到本地视频的缩略图
    搭建直播平台,android如何得到本地视频的缩略图 publicclassVideoThumbUtils{  /**   *得到视屏的缩略图   *   *@paramvideoPath   *@paramwidth   *@paramheight   *@return   */  publicstaticBitmapgetVideoThum......
  • Android AVB中的几种Descriptor
    avbtoolinfo_image查看img信息./android/external/avb/avbtoolinfo_image--imageout/evb/download_images/emmc/vbmeta.imgMinimumlibavbversion:1.0HeaderBlock:256bytesAuthenticationBlock:576bytesAuxiliaryBlock:3456byte......
  • Android Studio——sdk相关包
    SDKPlatforms相关   SDKTools相关 ......
  • 在Android应用中通过Chaquopy使用Python
    在Android应用中通过Chaquopy使用Python[译]通过Python脚本和包为Android应用带来更多的功能翻译自https://proandroiddev.com/chaquopy-using-python-in-android-apps-dd5177c9ab6b欢迎通过我的Blog访问此文章.Python在开发者社区中时最受欢迎的语言之一,因为其简单,健......
  • Android Camera相关知识整理
    View相关原文:SerfaceView与TextureView的区别区别:Sureface有自己的Serface(由屏幕显示内容合成器(screencompositor)所管理的原生缓冲器的句柄)是一个单独的View,会在WMS中创建单独的窗口,有自己的渲染进程,不受UI层的控制,因此不能与其他UI组合在一起,不能进行平移缩放等变换。而Tex......
  • cordova android使用https协议
     在cordvoa添加平台后,cordovalib的文件夹下SystemWebViewClient.java文件(code\platforms\android\CordovaLib\src\org\apache\cordova\engine);修改:onReceivedSslError,方法,只需按以下方法修改publicvoidonReceivedSslError(WebViewview,SslErrorHandlerhandler,SslErr......
  • uniapp android检查权限,不进行获取
    varManifest=plus.android.importClass("android.Manifest");varMainActivity=plus.android.runtimeMainActivity();MainActivity.checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)......
  • Android开发 Jetpack Compose FlowColumn与FlowRow瀑布流布局
    前言  FlowColumn与FlowRow是Jetpack提供的辅助库accompanist的一员,以提供那些在JetpackComposesdk中目前还没有的功能API。因为默认库中的Column、Row、LazyVerticalGrid、LazyHorizontalGrid都无法满足流瀑布布局的需求,而且类似这种网格布局LazyVerticalGrid、LazyHorizont......
  • android - AsyncTask 完成后重新启动完整的 Android 应用程序
    我正在编写的应用程序会检查/sdcard下的目录中是否有特殊的ZIP文件,如果没有则开始下载并解压缩它。下载和解压缩工作得很好,即使是子目录。但我需要在完成后重新启动该应用程序-但这是行不通的。起初我有一个特殊的Activity“PreMainActivity.java”只是为了重启目的:imp......