Android UI控件学习(一)——拖动条

  • 自述
  • 正文——拖动条
    • 实例
      • 项目结构
      • 具体代码参考
      • 运行效果
  • 结尾

自述

一开始看到的是毫无例外的废话部分,可自行跳过,首先,我想说的是,如果你之前学习过Android开发,那么下面我写的代码应该可以看懂,如果你是刚要学习Android,那么你可以先去搜一下其他的文章,我这篇只是讲了一个UI控件而已,并不能教你如何学安卓开发,也许以后我会写那种文章,但至少这篇帮不到你,抱歉。好了,现在假设你跟我一样,学过一点点Android,但是又不是很了解,至少要了解目录结构,然后我们就可以开始了。

正文——拖动条

我用的开发工具是Android Studio

实例

先看一个实例吧,我觉得直接看例子比较实在。有兴趣的朋友可以复制我的代码,去粘到相应文件里面,运行一下试试看,详细的代码可以去我的GitHub上拷贝,这里是我的GitHub地址

项目结构

这里先说一下我的项目结构吧,因为项目里面被我集成了好多控件用来练习,所以怕初学者弄混,以前我看别人的代码的时候经常会因为不知道往哪个文件写代码而停滞不前,所以我决定尽量写详细一点,希望可以帮得到你。

图中被圈出来的都是跟此次实例相关的文件,

具体代码参考

MainActivity.java文件是主程序入口,被我用按钮的形式,当做菜单,来选择进入各个控件练习页面了,这里就不详细介绍了,只列出MainActivity中部分有关代码

private Button btnSeekBar;//拖动条@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    /**     * 初始化函数,获取控件id,并给按钮添加监听     */    private void init() {    //获取activity_main.xml文件中有一个id叫btn_seek_bar的按钮,你也可以取其他id名,这里跟xml中的id对应上就行。        btnSeekBar = (Button) findViewById(R.id.btn_seek_bar);        btnSeekBar.setOnClickListener(new onClickBtn());    }/**     * 处理监听事件     */    class onClickBtn implements View.OnClickListener {        @Override        public void onClick(View v) {            switch (v.getId()) {                case R.id.btn_seek_bar:                    openAct(SeekBarActivity.class);//跳转到SeekBarActivity页面                    break;                    //……其他页面            }        }    }

openAct()方法是我自定义的一个方法,因为后期调用Intent对象会很频繁,又因为我懒,所以写了个调用方法,

    /**     * 打开一个activity页面,不传递数据     *     * @param actClass 传入要跳转的activity     */    public void openAct(Class<?> actClass) {        Intent intent = new Intent(this, actClass);        startActivity(intent);    }

接下来先在layout布局文件里面新建一个名叫activity_seek_bar.xml的文件,里面填入以下代码

<?xml version="1.0" encoding="utf-8"?>        
android:max 设置拖动条的最大值
android:progress 设置当前值

然后在java文件夹中的项目包里新建一个名叫SeekBarActivity的class文件,代码如下

public class SeekBarActivity extends Activity {    private SeekBar seekBar;    private TextView tv;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_seek_bar);        init();    }    private void init() {        seekBar = (SeekBar) findViewById(R.id.seekBar);        tv = (TextView) findViewById(R.id.seekBar_tv);        //添加事件监听        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                // 当进度条改变时,改变文本框的显示内容                tv.setText("当前值:"+progress);            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {                Toast.makeText(SeekBarActivity.this,"开始滑动",Toast.LENGTH_SHORT).show();            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {                Toast.makeText(SeekBarActivity.this,"结束滑动",Toast.LENGTH_SHORT).show();            }        });    }}
OnSeekBarChangeListener() 可以为拖动条添加监听事件
onStartTrackingTouch 当开始滑动滑块时,会执行该方法下的代码
onStopTrackingTouch 当结束滑动滑块时,会执行该方法下的代码
onProgressChanged 当滑块进度改变时,会执行该方法下的代码

具体代码都写完了,这里有必要提一下,细心的朋友可能注意到了,我在布局文件里的text是引用了string文件里的name名,如果你是有一定基础的应该知道,我就详细写一下吧,
在string.xml文件中添加如下代码:

……拖动条    当前值:50    

然后你就可以用了
哦对了,新建了activity,别忘了去AndroidManifest.xml中添加一下

……

OK,大功造成。

运行效果

到此程序代码就算完成了,好了看一下运行效果吧,我都有些迫不及待了

滑动改变一下,

OK,是可以的,没有问题,你成功了吗?

结尾

终于写完了,哇,莫名有一点点激动,虽然程序并不复杂,但第一次以这样的形式来写一个程序,想想还是蛮有成就感的,毕竟也是第一次在博客上写代码,这里也谢谢各位朋友的耐心阅读,可能我写的并不是很好,逻辑可能也还有待完善,所以也希望大家有什么意见和建议多对我这个新人提提,我希望能在这里和各位朋友共同成长。
以后会抽时间更新更多的高级控件练习,如果你也有兴趣,欢迎关注我,我们一起学习。

更多相关文章

  1. 关于Android工程从eclipse迁移至android studio的过程
  2. Fatal signal 11 (SIGSEGV), code 1, fault addr 0x34 in tid 75
  3. resources的使用
  4. Android(安卓)NDK 开发入门环境配置与小例子
  5. Android中使用SAX对XMl文件进行解析
  6. 如何将Android数据库操作通用化(一)
  7. [程序猿感悟] Android平台开发中的重构三步走
  8. Android(安卓)性能监测工具,优化内存、卡顿、耗电、APK的方法
  9. Android中微信支付的调用方法

随机推荐

  1. MySql Sql 优化技巧分享
  2. 利用ssh tunnel链接mysql服务器的方法
  3. mysql 全文检索中文解决方法及实例代码
  4. 浅谈mysql可有类似oracle的nvl的函数
  5. 浅谈Mysql中类似于nvl()函数的ifnull()函
  6. Window下Mysql忘记root密码怎么重置
  7. 一次Mysql死锁排查过程的全纪录
  8. Windows10 64位安装MySQL5.6.35的图文教
  9. MySQL5.6.31 winx64.zip 安装配置教程详
  10. MySQL注入绕开过滤的技巧总结