展会信息港展会大全

Android 自定义ProgressBar
来源:互联网   发布日期:2015-10-03 10:58:32   浏览:1868次  

导读:一、activity_main.xml 自定义了控件,外层是RelativeLayout,里面是个View,通过设置View的宽度来实现进度条的前进,主要com.jltxgcy...

一、activity_main.xml

自定义了控件,外层是RelativeLayout,里面是个View,通过设置View的宽度来实现进度条的前进,主要com.jltxgcy.progressbar.ProgressView要和包名一致

.jltxgcy.progressbar.ProgressView>

二、ProgressView.java

setProgress之所以要延迟20毫秒,是因为只有这样才能顺利获取View的高度和宽度。自定义控件可以操作自己的View,通过onFinishInflate,来找到View,然后来操作

package com.jltxgcy.progressbar;

import android.content.Context;

import android.graphics.Color;

import android.util.AttributeSet;

import android.view.View;

import android.widget.RelativeLayout;

public class ProgressView extends RelativeLayout {

private View mProgress;

public ProgressView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

protected void onFinishInflate() {

// TODO Auto-generated method stub

super.onFinishInflate();

mProgress = findViewById(R.id.progress);

}

public void setBackgroud() {

mProgress.setBackgroundColor(Color.BLUE);

}

public void setProgress(final int progress) {

postDelayed(new Runnable() {

@Override

public void run() {

int width = getWidth();

int height = getHeight();

int curProgress = (int) (progress / 100.0 * width);

LayoutParams params = new LayoutParams(curProgress, height);

mProgress.setLayoutParams(params);

}

}, 20);

}

}

三、MainActivity.java

通过findViewById来操作自定义ProgreeView

package com.jltxgcy.progressbar;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

public class MainActivity extends Activity {

private ProgressView mProgressView;

private int progressRate;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mProgressView = (ProgressView) findViewById(R.id.rootview);

mProgressView.postDelayed(new updataProgressBar(), 500);

}

class updataProgressBar implements Runnable{

@Override

public void run() {

mProgressView.setBackgroud();

mProgressView.setProgress(progressRate);

progressRate += 2;

mProgressView.postDelayed(new updataProgressBar(), 500);

}

}

}

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港