zoukankan      html  css  js  c++  java
  • 自定义进度条组合控件

    package com.loaderman.progressviewdemo;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ProgressView pv = (ProgressView) findViewById(R.id.pv_test);
            pv.setRightText("右边信息");
            pv.setLeftText("左边信息");
            pv.setTitle("标题信息");
            pv.setProgress(75);
        }
    }
    
    package com.loaderman.progressviewdemo;
    
    import android.content.Context;
    import android.util.AttributeSet;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    
    /**
     * 
     * 自定义进度条组合控件
     */
    public class ProgressView extends LinearLayout {
    
    
        TextView    tvTitle;
        ProgressBar pbProgress;
        TextView    tvLeft;
        TextView    tvRight;
    
        public ProgressView(Context context) {
            this(context, null);
        }
    
        public ProgressView(Context context, AttributeSet attrs) {
            this(context, attrs, -1);
        }
    
        public ProgressView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            initView();
        }
    
        private void initView() {
            View view = View.inflate(getContext(), R.layout.layout_progress, this);
            tvLeft = (TextView) view.findViewById(R.id.tv_left);
            pbProgress = (ProgressBar) view.findViewById(R.id.pb_progress);
            tvTitle =    (TextView) view.findViewById(R.id.tv_title);
            tvRight = (TextView) view.findViewById(R.id.tv_right);
        }
    
        public void setTitle(String title) {
            tvTitle.setText(title);
        }
    
        public void setLeftText(String text) {
            tvLeft.setText(text);
        }
    
        public void setRightText(String text) {
            tvRight.setText(text);
        }
    
        public void setProgress(int progress) {
            pbProgress.setProgress(progress);
        }
    }
    

     custom_progress.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/progress_bg"/>
    
        <item android:id="@android:id/secondaryProgress">
            <scale
                android:drawable="@drawable/progress_progress"
                android:scaleWidth="100%"/>
        </item>
    
        <item android:id="@android:id/progress">
            <scale
                android:drawable="@drawable/progress_progress"
                android:scaleWidth="100%"/>
        </item>
    
    </layer-list>
    

     progress_bg.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="@color/light_gray"/>
    </shape>
    

      progress_progress.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle">
        <solid android:color="#E69191"/>
    </shape>
    

     activtiy_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.loaderman.progressviewdemo.MainActivity">
    
        <com.loaderman.progressviewdemo.ProgressView
            android:id="@+id/pv_test"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
    </RelativeLayout>
    

     layout_progress.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="3dp">
    
        <TextView
            android:id="@+id/tv_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:layout_marginRight="5dp"
            android:textColor="@color/black"
            android:textSize="16sp"
            />
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="25dp">
    
            <ProgressBar
                android:id="@+id/pb_progress"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:progress="50"
                android:progressDrawable="@drawable/custom_progress"/>
    
            <TextView
                android:id="@+id/tv_left"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="5dp"
                android:textColor="@color/black"
                android:textSize="16sp"
                />
    
            <TextView
                android:id="@+id/tv_right"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="5dp"
                android:textColor="@color/black"
                android:textSize="16sp"
                />
    
        </RelativeLayout>
    
    </LinearLayout>
    

     效果图:



     

  • 相关阅读:
    JavaScript实现HTML导航栏下拉菜单[悬浮显示]
    Paper Pal:一个中英文论文及其代码大数据搜索平台
    小程序定位地图模块全系列开发教学(超详细)
    简单的个人介绍网页主页面【附代码】
    前端分页功能(通用)
    打造完美写作系统:Gitbook+Github Pages+Github Actions
    移动端布局
    三剑客var,let,const
    包含多个段的程序01 零基础入门学习汇编语言29
    更灵活的定位内存地址的方法01 零基础入门学习汇编语言32
  • 原文地址:https://www.cnblogs.com/loaderman/p/6491329.html
Copyright © 2011-2022 走看看