android-Bar系列

来源:互联网 发布:2016年十大网络神曲 编辑:程序博客网 时间:2024/06/06 06:29

SeekBar

继承ProgressBar,提供用户改变进度的拖块

xml:    <SeekBar        android:id="@+id/m_seek"        android:layout_width="300dp"        android:layout_height="wrap_content"        android:max="100"        android:progress="30"         android:secondaryProgress="50"/>
java:
private OnSeekBarChangeListener mSeekListener = new OnSeekBarChangeListener() {        //用户停止拖动是触发(手指离开了拖块瞬间)        @Override        public void onStopTrackingTouch(SeekBar seekBar) {            Log.e("m_tag", "onStopTrackingTouch:"+seekBar.getProgress());        }        //用户开始拖动(手指触摸到拖块的瞬间)        @Override        public void onStartTrackingTouch(SeekBar seekBar) {            Log.e("m_tag", "onStartTrackingTouch:"+seekBar.getProgress());        }        //进度发生变化时触发        @Override        public void onProgressChanged(SeekBar seekBar, int progress,                boolean fromUser) {            Log.e("m_tag", "onProgressChanged:"+progress+" isFromUser:"+fromUser);        }    };

设置监听

    SeekBar seek = (SeekBar) findViewById(R.id.m_seek);    seek.setOnSeekBarChangeListener(mSeekListener);

进度系列控件自定义

进度的自定义

1、在res的drawable下定义layer-list文件,如:progress_drawable.xml    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >        <!-- 背景层 -->        <item            android:id="@android:id/background"            android:drawable="@drawable/bg"/>        <!-- 第二进度层 -->        <item            android:id="@android:id/secondaryProgress"            android:drawable="@drawable/sec_pro"/>        <!-- 第一进度层 -->        <item            android:id="@android:id/progress"            android:drawable="@drawable/pro"/>    </layer-list>
2、设置进度资源
android:progressDrawable="@drawable/progress_drawable"对于拖动条可以定义selector文件来改变拖块的效果,如定义了thumb_drawable.xml    <selector xmlns:android="http://schemas.android.com/apk/res/android">        <item android:drawable="@drawable/nomal" android:state_pressed="false"/>        <item android:drawable="@drawable/press" android:state_pressed="true"/>    </selector> 替换原有的拖块的效果(SeekBar的属性)    android:thumb="@drawable/thumb_drawable"

RatingBar

<RatingBar        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:numStars="5" 星星数量        android:rating="1.5"/> 默认的分值    可以通过android:isIndicator="true"设置为指示器(用户无法改变值)    java:    RatingBar r = (RatingBar) findViewById(R.id.rating);        r.setRating(2.5f); 设置分值        //r.getRating()获取分值        r.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {            @Override            public void onRatingChanged(RatingBar ratingBar, float rating,                    boolean fromUser) {                Log.e("m_tag", "rating:"+rating);            }        });

ImageView

    <ImageView        android:layout_width="300dp"        android:layout_height="280dp"        android:background="#ff333333"        android:src="@drawable/pic2"        android:scaleType="centerCrop" />

如果宽高固定,然后图片和ImageView的宽高不成等比,则需要android:scaleType来处理拉伸效果

fitXY表示铺满(按图片四个角拉伸图片)fitStart从左上角开始等比例拉伸或者缩放去填充ImageViewfitEnd从右下角开始fitCenter放在中间等比例填充ImageViewcenterCrop按ImageView等比例取图片的中间部分填充ImageViewcenterInside按图片原始大小显示在ImageView中间

java中操作ImageView

    iv = (ImageView) findViewById(R.id.image);    //设置res下的图片     iv.setImageResource(R.drawable.pic1);    也可以通过以下方式设置一个sdcard中的图片:    //URI表示一个数据的源(地址)文件地址 网址  经纬度    File f = new File("/mnt/sdcard/yux.jpg");    Uri uri = Uri.fromFile(f); //文件转为Uri    iv.setImageURI(uri);

注意,程序读取本地文件需要有读sdcard权限

添加方式为:在manifest中的<application>标签外添加如下语句:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
0 0