Android SeekBar样式修改实现签到效果

 1、实现功能 签到的progress 支持气泡指示器 

效果图

2、实现代码

(1)重写SeekBar禁止拖动

package com.example.demo;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.SeekBar;

public class MySeekBar extends SeekBar{

    public MySeekBar(Context context) {
        super(context,null);
    }

    public MySeekBar(Context context, AttributeSet attrs) {
        super(context, attrs, 0);

    }

    public MySeekBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
// 原来是要将TouchEvent传递下去的,我们不让它传递下去就行了
// return super.onTouchEvent(event);
        return false;
    }



}

(2)mainActivity

package com.example.demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends Activity {
    private MySeekBar mySeekBar;
    private int speed = 0;//进度条每次点击
    private int lin_speed = 0;//上面的描述文字的位置
    private LinearLayout ll_des;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mySeekBar = (MySeekBar) findViewById(R.id.seekbar);
        Button btn_add = (Button) findViewById(R.id.btn_add);
        mySeekBar.setProgress(2);
        ll_des = (LinearLayout) findViewById(R.id.ll_des);

        btn_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        if (speed == 2) {
                            speed = 0;
                        }
                        if (speed < 68) {
                            if (speed == 60) {
                                speed = speed + 10 - 2;//进度条每次前进十个位置
                            } else {
                                speed = speed + 10;//进度条每次前进十个位置
                            }
                            if (speed <= 60) {
                                lin_speed = lin_speed + 120;//组件根据实际组件长宽算出来的
                            }
                            LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) ll_des.getLayoutParams();
                            lp.setMargins(lin_speed, 0, 0, 0);
                            ll_des.setLayoutParams(lp);
                            mySeekBar.setProgress(speed);
                        }
                    }
                });
            }
        });
    }

}

(3)布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical"
    android:layout_margin="30dp"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="加" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/ll_des"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="4dp"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/top_img"
                android:paddingBottom="2dp"
                android:paddingLeft="6dp"
                android:paddingRight="6dp"
                android:paddingTop="2dp"
                android:text="累积18积分"
                android:textColor="#ffffffff"
                android:textSize="9sp" />

            <ImageView
                android:layout_width="12dp"
                android:layout_height="wrap_content"
                android:src="@drawable/san_jiao" />
        </LinearLayout>

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

            <ImageView
                android:id="@+id/im_gif"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_marginLeft="10dp"
                android:src="@drawable/m"
                android:visibility="gone" />


        </RelativeLayout>

        <com.example.demo.MySeekBar
            android:id="@+id/seekbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="6dp"
            android:max="70"
            android:progressDrawable="@drawable/ddd"
            android:thumb="@drawable/m" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                style="@style/myText"
                android:text="@string/_1" />

            <TextView
                style="@style/myText"
                android:text="@string/_2" />

            <TextView
                style="@style/myText"
                android:text="@string/_3" />

            <TextView
                style="@style/myText"
                android:text="@string/_4" />

            <TextView
                style="@style/myText"
                android:text="@string/_5" />

            <TextView
                style="@style/myText"
                android:text="@string/_6" />

            <TextView
                style="@style/myText"
                android:text="@string/_7" />
        </LinearLayout>
    </LinearLayout>


</LinearLayout>

(4)核心draeble

<?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:height="8dp" android:top="7dp">
        <shape>
            <corners android:radius="@dimen/activity_horizontal_margin"/>
            <solid android:color="#6E8B9B"/>
        </shape>
    </item>

    <item android:id="@android:id/progress" android:height="8dp" android:top="7dp" android:drawable="@drawable/b">
    </item>

    <item android:id="@android:id/secondaryProgress"  android:height="8dp" android:top="7dp">
        <clip>
            <shape>
                <corners android:radius="@dimen/activity_horizontal_margin"/>
                <solid android:color="#6E8B9B"/>
            </shape>
        </clip>
    </item>

</layer-list>

猜你喜欢

转载自blog.csdn.net/weixin_39706415/article/details/97110825