SeekBar小结
2013-12-23 11:27
225 查看
seekbar默认的最小值是0,可是现实中许多的时候最小值,却不是0,所以需要自定下。
一个取巧的办法就是,在重写的方法中,自己修改进度值。
seekbar查知值的方式,是根据进度的百分比来算的。0-18区间,每份的值与2-20的比重是一样的,所以不存在值的偏差问题。
视图:
value:0
value:18
自定义seekbar ,自定义背景,进度背景和圆点的点击状态。
有个文本视图随着进度而该改变位置。
活动:
布局:
自定义背景和进度图:
自定义进度的点:
一个取巧的办法就是,在重写的方法中,自己修改进度值。
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub //设置最小的范围值是: 2 if (seekBar == rangeSB) { rangtxt.setText((progress+2) + ""); } }
seekbar查知值的方式,是根据进度的百分比来算的。0-18区间,每份的值与2-20的比重是一样的,所以不存在值的偏差问题。
视图:
value:0
value:18
自定义seekbar ,自定义背景,进度背景和圆点的点击状态。
有个文本视图随着进度而该改变位置。
活动:
public class TestSeekBar extends Activity implements OnSeekBarChangeListener { private TextView value; private SeekBar seekBar; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.acy_testseekbar); initView(); } public void initView() { // 获取屏幕的宽度 WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(metrics); int swidth = metrics.widthPixels; value = (TextView) findViewById(R.id.tv_showvalue); seekBar = (SeekBar) findViewById(R.id.sb_mybar); seekBar.setOnSeekBarChangeListener(this); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(10, 10, 10, 0); // 边距,根据自己的布局 修改吧 params.leftMargin = 480 * progress / 100 - 20; // 设置位置 value.setLayoutParams(params); value.setText(progress / 10 + ""); // 显示 value.setVisibility(View.VISIBLE); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub // 隐藏 value.setVisibility(View.INVISIBLE); } }
布局:
<?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" > <TextView android:id="@+id/tv_showvalue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0" android:visibility="invisible" /> <SeekBar android:id="@+id/sb_mybar" android:layout_width="match_parent" android:layout_height="wrap_content" android:progressDrawable="@drawable/seek_img" android:thumb="@drawable/thum" /> </LinearLayout>
自定义背景和进度图:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 背景 --> <item android:id="@+android:id/background" android:drawable="@drawable/barpress"/> <!-- 进度条 --> <item android:id="@+android:id/progress" android:drawable="@drawable/slide_rank"/> </layer-list>
自定义进度的点:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 按下状态 --> <item android:drawable="@drawable/barpoint" android:state_pressed="true"/> <!-- 一般状态 --> <item android:drawable="@drawable/barpointx" android:state_pressed="false"/> </selector>
相关文章推荐
- NSDate转本地时间
- 让我们现在开始Start Kernel: i386_start_kernel
- 再次进入startup_32: 初始化页表
- ios数据本地持久化 之 NSUserDefaults,切入后台时保存
- C++模板使用介绍
- linux上vnc server的详细配置过程
- Unbalanced calls to begin/end appearance transitions for <AllInfoViewController: 0x15627e00>.
- 《Effective C++》学习笔记条款19 设计class犹如设计type
- 《视频解密》中文版(第四版)第九章NTSC和PAL数字编码和解码(第一部分)
- Linux Kernel 2.6.37 启动过程:startup_32
- KbmMW 4.40.00 正式版发布
- 解callback嵌套
- 利用pypy提高python脚本的执行速度及测试性能 推荐
- 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part8– 第21至第23天
- struts2从form取值的三种方式
- s2sh+tomcat6.0+MySql连接池异常
- Javascript中的undefined、null、""、0值和false的区别总结
- 使用inno setup 制作安装文件-demo1
- 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part7– 第18至第20天
- stat()—获取文件状态