Android 电池电量进度条,上下滚动图片的进度条(battery)

最近,制作一个app,需要模拟一个电池电量的进度条,根据电量多少来设置百分比,进度条不断上下滚动,就像平时手机充电一样的电池电量进度条。我就自定义view实现了电量进度条。修改图片就可以达到自己想要的效果

一、自定义View,Battery.java,循环刷新界面,两张图片上下滚动,达到不断向右移动的效果。挺有意思的

package com.example.battery;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;

public class Battery extends View {
	public float currentX = 80;
	public float currentY = 80;
	private float secondY = 80;
	private Paint mPaint = new Paint();
	private Context mContext;
	private Handler mHandler;
	private Bitmap mBmp;
	private int speedTime = 20;

	private float with = 200;
	private float height = 50;
	private float percentage = 0.5f;

	public Battery(Context context) {
		super(context);
		this.mContext = context;

	}

	public Battery(Context context, AttributeSet set) {
		super(context, set);
		this.mContext = context;
		init();
	}

	public void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		with = this.getWidth();
		height = this.getHeight();

		mPaint.setColor(Color.BLUE);
		Resources res = mContext.getResources();
		BitmapDrawable bmpDraw = (BitmapDrawable) res
				.getDrawable(R.drawable.loading_pic);
		mBmp = bmpDraw.getBitmap();

		canvas.clipRect(0, 0, with*percentage, height);

		canvas.drawBitmap(mBmp, 0, currentY, mPaint);

		canvas.drawBitmap(mBmp, 0, secondY, mPaint);
	}

	private void init() {
		percentage = 0;

		mHandler = new Handler() {
			public void handleMessage(Message msg) {
				switch (msg.what) {
				case 1:
					currentX ++;
					currentY ++;
					if (mBmp != null && currentY > mBmp.getHeight()){
						currentY = -mBmp.getHeight();
					}
					if (mBmp != null){
						secondY = currentY+mBmp.getHeight();
						if (secondY >= mBmp.getHeight()){
							secondY = currentY-mBmp.getHeight();
						}
					}

					percentage = percentage + 0.003f;
					if (percentage > 1){
						percentage = 0;
					}
					// 每次计算后都发送消息进入下一次循环,并刷新界面
					mHandler.sendEmptyMessageDelayed(1, speedTime);
					postInvalidate();
					break;
				}
				super.handleMessage(msg);
				postInvalidate();
			}
		};

		// 首次循环刷新界面
		mHandler.sendEmptyMessageDelayed(1, speedTime);
	}
}

二、MainActivity

package com.example.battery;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

}

三、activity_main

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:gravity="center" >  

    <com.example.battery.Battery
        android:layout_width="300dp"
        android:layout_height="10dp"
        android:layout_gravity="center"
        android:gravity="center"
        android:padding="10dp" />  

</LinearLayout>

四、附图片效果

五、下载路径

下载:http://download.csdn.net/detail/lqw770737185/7824695</>

本文地址:http://www.cnblogs.com/liqw/p/3938422.html

时间: 2024-12-29 11:21:15

Android 电池电量进度条,上下滚动图片的进度条(battery)的相关文章

android异步任务图片下载(进度条提示进度)

一.AsyncTask介绍 Android提供了几种在其他线程中访问UI线程的方法. Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Hanlder 这些类或方法同样会使你的代码很复杂很难理解.然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕. 为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界

95秀-PK 动画 进度条 描边 圆角图片

PK界面 <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Rela

【转】Android UI系列-----时间、日期、Toasts和进度条Dialog

原文网址:http://www.cnblogs.com/xiaoluo501395377/p/3421727.html 您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态. 如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦 如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: [email protected] / [email protected] 如果需要转载,请注明出处,谢谢!! 本篇随笔将继续学

Xamarin iOS教程之进度条和滚动视图

Xamarin iOS教程之进度条和滚动视图 Xamarin iOS 进度条 进度条可以看到每一项任务现在的状态.例如在下载的应用程序中有进度条,用户可以很方便的看到当前程序下载了多少,还剩下多少.QQ音乐播放器中也使用到了进度条,它可以让用户看到当前音乐播放了多少,还剩多少等.在Xamarin.iOS中也提供实现进度条的类,即UIProgressView. [示例2-23]以下将实现进度条加载的效果.具体步骤如下: (1)创建一个Single View Application类型的工程,命名为

基于jQuery带进度条全屏图片轮播代码

基于jQuery带进度条全屏图片轮播代码.这是一款基于jQuery实现的oppo手机官网首页带进度条全屏图片轮播特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="pic"> <ul> <li style="background: url(images/bg1.jpg) center;"> <img src="images/con1.png"> <

Android -- 真正的 高仿微信 打开网页的进度条效果

(本博客为原创,http://home.cnblogs.com/u/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截图 六,完整项目 一,为什么说是真正的高仿? 阐述这个问题前,先说下之前网上的,各位可以复制这段字,去百度一下  "仿微信打开网页的进度条效果" ,你会看到有很多类似的文章,不过他们有个共同点,就是实现方法都是一样的,而且,都忽略了微信加载网页时,进度条的缓慢动画效果,它不是生硬地一

Android 自动循环滚动图片(广告)附带导航小圆点

用viewpage实现了滚动图片,自动循环的效果,附带导航的小圆点 效果图如下: 准备工作: 下载我打包好的jar包,放入项目的libs文件夹下即可使用 下载地址:http://download.csdn.net/detail/u012027644/8744019 使用方法: Activity的代码: public class MainActivity extends Activity { MyImgScroll myPager; // 图片容器 LinearLayout ovalLayout;

详细分析Android viewpager 无限循环滚动图片

由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了,但是讲的都不清楚,我查了很多资料,我就知道position/list.size().但是怎么用,我还是不明白.我后来看了百度工程师任玉刚的循环广告位组件的实现突然明白了无限滚动的原理.总结如下: 1.要在int getCount() 方法里 写 return BANNER_SIZE.  这个 BAN

Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

首先我们先看第一个界面吧,使用将手机中的图片扫描出来,然后根据图片的所在的文件夹将其分类出来,并显示所在文件夹里面的一张图片和文件夹中图片个数,我们根据界面元素(文件夹名, 文件夹图片个数,文件夹中的一张图片)使用一个实体对象ImageBean来封装这三个属性 package com.example.imagescan; /** * GridView的每个item的数据对象 * * @author len * */ public class ImageBean{ /** * 文件夹的第一张图片路