美文网首页我爱编程
Android之进度条控件和常用资源分类总结

Android之进度条控件和常用资源分类总结

作者: 征程_Journey | 来源:发表于2017-05-21 11:36 被阅读0次

    1      基本UI(二)

    1.1    进度条

    1.1.1

    常用属性:

    style进度条样式

    Android:max进度最大值

    android:progress进度值

    setMax(intmax)设置进度最大值

    常用方法:

    setMax(intmax)设置进度最大值

    getMax()获取进度最大值

    setProgress(intprogrss)设置进度值

    getProgress()获取进度值

    ==练习

    android:id="@+id/pdar1"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    style="?android:attr/progressBarStyleHorizontal"

    android:max="100"

    android:progress="30"/>

    @Override

    publicvoid onClick(View v) {

    //TODO Auto-generated method stub

    switch(v.getId()) {

    caseR.id.btn_add:

    pdar1.setProgress(pdar1.getProgress()+ 10);

    break;

    caseR.id.btn_minus:

    pdar1.setProgress(pdar1.getProgress()- 10);

    break;

    default:

    break;

    }

    tv_progress.setText(pdar1.getProgress()+"%");

    }

    }

    //如果需要执行耗时操作,那么耗时操作就应该放在子线程中执行

    newThread(){

    booleanisRight = true;  //记录滚动条的滚动方向

    publicvoid run() {

    //自动来回滚动

    while(true){

    try{

    Thread.sleep(50);

    //获取当前进度

    int progress = pbar.getProgress();

    //判断当前的进度的位置,如果是0或最大值,就需要改变方向

    if(progress<=0){

    isRight= true;  //代表方向往右

    }elseif(progress >= pbar.getMax()){

    isRight = false;  //代表方向往左

    }

    //根据滚动的方向修改滚动条的值

    if(isRight){

    pbar.setProgress(pbar.getProgress()+1);

    }else{

    pbar.setProgress(pbar.getProgress()-1);

    }

    }catch (InterruptedException e) {

    //TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }.start();

    1.1.2  练习触摸事件实现快进效果

    publicclass MainActivity extends Activity {

    privateButton button1;

    privateSeekBar seekBar1;

    privateSeekBarAutoRun seekBarAutoRun;

    @Override

    protectedvoid onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    findViews();

    bindListener();

    }

    privatevoid bindListener() {

    //设置View的触摸事件

    button1.setOnTouchListener(newOnTouchListener() {

    @Override

    publicboolean onTouch(View v, MotionEvent event) {

    //TODO Auto-generated method stub

    switch(event.getAction()) {

    caseMotionEvent.ACTION_DOWN://手指按下

    Log.i("msg","手指按下");

    //进度条自动开始滚动

    if(seekBarAutoRun==null){

    seekBarAutoRun= new SeekBarAutoRun();

    seekBarAutoRun.start();

    }

    break;

    caseMotionEvent.ACTION_MOVE://手指移动

    Log.i("msg","手指移动");

    break;

    caseMotionEvent.ACTION_UP://手指离开

    Log.i("msg","手指离开");

    //进度条自动停止滚动

    if(seekBarAutoRun!= null){

    seekBarAutoRun.autoStopRunTask();

    seekBarAutoRun= null;

    }

    break;

    default:

    break;

    }

    returntrue;      //事件消费的问题

    }

    });

    }

    privatevoid findViews() {

    button1= (Button) this.findViewById(R.id.button1);

    seekBar1= (SeekBar) this.findViewById(R.id.seekBar1);

    }

    classSeekBarAutoRun extends Thread{

    @Override

    publicvoid run() {

    while(!isInterrupted()){

    try{

    Thread.sleep(50);

    seekBar1.setProgress(seekBar1.getProgress()+ 1);

    }catch (InterruptedException e) {

    e.printStackTrace();

    break;

    }

    }

    }

    /**

    * 停止自动滚动

    */

    publicvoid autoStopRunTask(){

    interrupt();

    }

    }

    }

    1.1.3  SeekBar

    SeekBar是ProgressBar的子类,功能很相似

    SeekBar可以与用户进行交互,在展示进度的同时允许用户手动改变进度

    特有属性和方法:

    android:thumb设置滑块所使用的图片

    setOnSeekBarChangeListener(listener)  设置滑动监听器

    1.1.4  RatingBar

    【特有属性和方法

    android:numberStars设置星星的数量(默认5颗星)

    android:rating设置被点亮的星星的个数

    android:stepSize设置最小评分的颗粒度

    setOnRatingBarChangeListener(listener)设置监听器

    1.1.5  SeekBar练习

    private void bindListener() {

    seekbar.setOnSeekBarChangeListener(newOnSeekBarChangeListener() {

    @Override

    public voidonStopTrackingTouch(SeekBar seekBar) {

    // TODOAuto-generated method stub

    }

    @Override

    public voidonStartTrackingTouch(SeekBar seekBar) {

    // TODOAuto-generated method stub

    }

    @Override

    public voidonProgressChanged(SeekBar seekBar, int progress,

    booleanfromUser) {

    if(progress<=30){

    //imageview.setImageResource(R.drawable.img1);

    imageview.setImageResource(imges[0]);

    }elseif(progress<=60){

    //imageview.setImageResource(R.drawable.img2);

    imageview.setImageResource(imges[1]);

    }else if(progress<=90){

    //imageview.setImageResource(R.drawable.img3);

    imageview.setImageResource(imges[2]);

    }

    }

    });

    }

    1.2    资源文件

    1、id

    2、布局

    3、字符串

    4、数组

    5、样式和主题

    6、菜单

    7、已编译的任意XML资源文件:res/xml

    8、未编译的原始资源文件:res/raw

    9、图像

    普通图像资源:drawable

    xml图像资源:bitmap

    图层(Layer)资源:layer-list

    图像状态(State)资源:selector

    图像级别(Level)资源:level-list

    淡入淡出(CrossFade)资源:transition

    外形(Shape)资源:shape(shape、gradient、padding、corners、stroke)

    10、动画资源

    逐帧动画:res/drawable

    补间动画:res/anim

    透明度补间动画 alpha

    缩放补间动画 scale

    旋转动画 rotate

    移动补间动画translate

    属性动画:res/animator(api11出现)

    逐帧动画:res/drawable

    属性动画:res/animator(api11出现)

    1.3    各种资源文件的xml格式

    1.3.1  字符串资源

    Android的国际化和本地化

    internationalization(国际化)简称 i18n,因为在i和n之间还有18个字符

    localization(本地化),简称L10n

    一般说明一个地区的语言时,用语言-地区的形式,如  zh-CN, zh-TW

    //获取字符串资源

    StringssString = getResources().getString(R.string.app_name);

    getString(R.string.app_name);      //等价

    1.3.2  数组资源

    在Android中,推荐使用数组资源文件来定义数组

    位置:res/values/arrays.xml

    小明

    小亮

    1

    2

    //字符串数组

    String[]names=getResources().getStringArray(R.array.nameaa);

    Log.i("MainActivity",names.toString());

    //获取整型数组资源

    int[] intArray=getResources().getIntArray(R.array.interarray);

    Log.i("MainActivity",intArray.toString());

    1.3.3  原始xml资源

    位置:res/xml目录下

    Java代码中的获取方式:getResources().getXml(R.xml.文件名称)

    哈利波特

    99.9

    Thinking In Java

    120

    小李飞刀

    50

    //原始xml资源

    XmlResourceParserparser =getResources().getXml(R.xml.books);

    //解析省略

    //这里注意的是,XmlResourceParser是一个pull解析器,不过多了一个方法,就是close方法

    //在解析完xml文件后,记得一定要调用close()方法释放资源

    1.3.4  图像资源

    【可以新建一个与分辨率无关适配的图形资源文件夹:drawble

    1、普通图像资源

    2、  图像状态(selector)资源

    slt_play.xml

    引用:

    android:background="@drawable/slt_play"

    3、  外形(shape)资源

    渐变色、倒圆角、尺寸、内边距

    <shape

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape=["rectangle" | "oval" |"line" | "ring"] >

    <corners

    android:radius="integer"

    android:topLeftRadius="integer"

    android:topRightRadius="integer"

    android:bottomLeftRadius="integer"

    android:bottomRightRadius="integer" />

    <gradient

    android:angle="integer"

    android:centerX="integer"

    android:centerY="integer"

    android:centerColor="integer"

    android:endColor="color"

    android:gradientRadius="integer"

    android:startColor="color"

    android:type=["linear" | "radial" |"sweep"]

    android:useLevel=["true" | "false"] />

    <padding

    android:left="integer"

    android:top="integer"

    android:right="integer"

    android:bottom="integer" />

    <size

    android:width="integer"

    android:height="integer" />

    <solid

    android:color="color" />

    <stroke

    android:width="integer"

    android:color="color"

    android:dashWidth="integer"

    android:dashGap="integer" />

    引用:

    android:background="@drawable/shape_demo"

    1.3.5  样式和主题

    在代码中可以通过style和theme来提高代码的复用性和可维护性。

    样式和主题的区别

    作用范围不同,样式作用于单个小控件,而主题作用于Activity或整个APP

    引用位置不同,样式都是在布局文件中被引用,而主题是在清单文件中被引用

    Values\ styles.xml

    #F00

    italic

    //注意:样式可以实现继承

    引用:

    style="@style/text_style2"

    主题:定义同样式,在Style.xml中,引用的形式不同:是在清单文件中引用。

    background">#D2E6D7

    parent="@android:style/Theme.DeviceDefault.Dialog.NoActionBar">

    #32FE32

    windowTitleSize">40dip

    windowBackground">@drawable/abc

    windowNoTitle">true

    windowFullscreen">true

    在清单文件中引用:

    android:name="com.example.day05theme.Activity2"

    android:theme="@style/blue_XYSTheme"/>

    android:theme="@style/girl_XYSTheme"/>

    1.4    其他资源文件

    Values下的

    color:颜色资源

    位置:res/values/colors.xml

    dimen:尺寸资源

    位置:res/values/dimens.xml

    id:id资源

    常见使用形式:values

    "1.0"encoding="utf-8"?>

    "id"name="tv1"/>

    引用:

    android:id="@id/tv2"

    使用的注意事项:

    1)在布局中引用id资源的话,必须要保证在引用之前先创建过这个id

    也可以在引用时候使用@+id,保证id肯定存在,

    PS:@+id的意思就是在使用这个id之前先会判断id是否存在,如果不存在就创建,如果存在就直接引用

    2)在同一个布局文件中不能出现同名的id,但是在不同的布局文件中可以出现相同的id

    3)我们可以预先将需要使用的id全部抽取出来作为资源定义在资源文件中

    提示:在Android支持资源类型有很多,如果要学习其他资源的使用,那么建议查看官方文档进行学习,如果要看资源使用的格式,可以查看SDK自带的资源文件,SDK自带的资源文件位置:SDK根目录\platforms\android-XX\data\res

    相关文章

      网友评论

        本文标题:Android之进度条控件和常用资源分类总结

        本文链接:https://www.haomeiwen.com/subject/fmbmxxtx.html