android基础控件(2)

1、progressBar

progressBar ,进度条,是一个显示进度的控件。

public class MainActivity extends AppCompatActivity {

    private ProgressBar mCirclrBar;
    private ProgressBar mRecBar;
    private Button mStart;
    private int count;
    private final int GUI_STOP_NOTIFIER = 100;
    private final int GUI_THREADING_NOTIFIER = 50;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        initView();

        mStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                mRecBar.setVisibility(View.VISIBLE);
                mCirclrBar.setVisibility(View.VISIBLE);

                //设置最大值
                mCirclrBar.setMax(100);
                mRecBar.setMax(100);

                //设置当前值
                mCirclrBar.setProgress(0);
                mRecBar.setProgress(0);
                mRecBar.setSecondaryProgress(0);

                //通过线程改变ProgressBar的值
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for(int i = 0; i < 10; i++) {
                            try {
                                count = (i + 1) * 10;

                                Thread.sleep(100);

                                if(i == 9) {
                                    //发送消息,中断线程
                                    Message m = new Message();
                                    m.what = GUI_STOP_NOTIFIER;
                                    MainActivity.this.myHandler.sendEmptyMessage(m.what);
                                }
                                else {
                                    Message m = new Message();
                                    m.what = GUI_THREADING_NOTIFIER;
                                    MainActivity.this.myHandler.sendEmptyMessage(m.what);
                                }

                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                }).start();
            }
        });
    }

    Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case GUI_STOP_NOTIFIER:
                    //完成进度,隐藏ProgressBar
                    mCirclrBar.setVisibility(View.GONE);
                    mRecBar.setVisibility(View.GONE);
                    Thread.currentThread().interrupt();
                    break;

                case GUI_THREADING_NOTIFIER:
                    if(!Thread.currentThread().isInterrupted()) {
                        mCirclrBar.setProgress(count);
                        mRecBar.setProgress(count);
                        mRecBar.setSecondaryProgress(count / 2);
                    }

                    break;

                default: break;
            }
            super.handleMessage(msg);
        }
    };

    private void initView() {
        mCirclrBar = findViewById(R.id.circlrBar);
        mRecBar = findViewById(R.id.recBar);
        mStart = findViewById(R.id.start);
    }
}

bar.xml

<?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/suo"
        />

    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/jiesuo"
        />

    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/suozi"
        />


</layer-list>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.admin.vip_05.MainActivity"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Progress使用实例"
        android:textSize="20sp"
        />

    <!--圆形进度条-->
    <ProgressBar
        android:id="@+id/circlrBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <!--长方形进度条-->
    <ProgressBar
        android:id="@+id/recBar"
        android:progressDrawable="@drawable/bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Horizontal"
        />

    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始" />

</LinearLayout>

这里写图片描述

background为灰色的锁,progress为绿色的锁,secondaryProgress为灰色的锁。

2、seekBar

这里写图片描述

 private SeekBar mBar;
 private TextView mTextView;
 int seekData = 0;

手动改变进度条的位置:

        mBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                mTextView.setText("当前进度为:" + progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

自动改变进度条位置:

 new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    if (mBar.getProgress() == 100) {
                        mBar.setProgress(0);
                        seekData = 0;
                    }
                    mBar.setProgress(seekData += 5);
                    String src = "" + seekData;
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

3、layer-list

3.1 边线效果

<!--使用蓝色填充-->
    <item>
        <shape>
            <solid android:color="#40ff00"/>
        </shape>
    </item>

    <!--距离顶层与底层1dp-->
    <item android:top="1dp"
        android:bottom="1dp"
        >
        <shape>
            <solid android:color="#e2a3a3"/>
        </shape>
    </item>

这里写图片描述

相当于先用一个绿色背景,后再用一个红色背景覆盖,并在上下各留出1dp的大小,达到边线的效果。

3.2 阴影效果

这里写图片描述

<item android:left="3dp"
        android:top="6dp"
        >
        <shape>
            <solid android:color="#b4b5b6"/>
        </shape>
    </item>

    <item android:bottom="6dp"
        android:right="3dp"
        >
        <shape>
            <solid android:color="#fff"/>
        </shape>
    </item>

这里textView的高度改为50pdp,会好一些。

这里设置一些比较大的值,来显示一下各个参数的含义。

这里写图片描述

3.3 缩放效果

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap
            android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="50dp"
        android:top="50dp"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="70dp"
        android:top="70dp"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>
</layer-list>

3.4 平移效果

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:gravity="center">
        <bitmap
            android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="10dp"
        android:top="10dp"
        android:gravity="center"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>

    <item
        android:left="20dp"
        android:top="20dp"
        android:gravity="center"
        >
        <bitmap android:src="@drawable/suo"
            />
    </item>
</layer-list>

猜你喜欢

转载自blog.csdn.net/Reserve_Scale/article/details/79654901