游走型进度条(桌面360)
来源:互联网 发布:金山数据大师破解版 编辑:程序博客网 时间:2024/06/15 09:11
进度条显示
主程序
package com.test.mypathview;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener { private static final int PROGRESS=0X56; private Button mButton; private MyPath mMyRecProgress; private int mProgress; private Handler mHandler=new Handler(){ public void handleMessage(android.os.Message msg) { switch (msg.what) { case PROGRESS: mProgress++; if(mProgress<=100){ mMyRecProgress.setmProgress(mProgress); mHandler.sendEmptyMessageDelayed(PROGRESS, 200); } break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //得到继承View的组件 mMyRecProgress= (MyPath) findViewById(R.id.progress); mButton=(Button) findViewById(R.id.button); mButton.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button: mHandler.sendEmptyMessageDelayed(PROGRESS, 1000); break; default: break; } }}
继承View的程序
package com.test.mypathview;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Align;import android.graphics.Path;import android.graphics.Path.Direction;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.View;public class MyPath extends View { private int mProgress; public int getmProgress() { return mProgress; } public void setmProgress(int mProgress) { this.mProgress = mProgress; invalidate(); } private Paint mPaintText; private Bitmap mBitmap; private Canvas mBitmapCanvas; private int mHeight; private int mWidth; private Path mPath; private Paint mPaint; private Paint mPaintPoint; private int count; private int mSize; private boolean isAdd=true; private static final int MESS=4; private Handler mHandler=new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case MESS: if(count<150){ count+=5; invalidate(); }else{ count=0; invalidate(); } mHandler.sendEmptyMessageDelayed(MESS, 50); break; default: break; } }; }; public MyPath(Context context, AttributeSet attrs) { super(context, attrs); //设置画百分比的画笔 mPaintText=new Paint(); mPaintText.setTextSize(50); mPaintText.setTextAlign(Align.CENTER); //设置填充进度的画笔 mPaint=new Paint(); mPaint.setStyle(Paint.Style.FILL); mPaint.setAntiAlias(true); mPaint.setTextSize(50); mPaint.setColor(Color.GREEN); //设置只显示重叠的部分 mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); //设置外面轮廓的画笔 mPaintPoint=new Paint(); mPaintPoint.setStrokeWidth(2); mPaintPoint.setStyle(Paint.Style.FILL); mPaintPoint.setColor(Color.RED); mPath=new Path(); //设置启动线程 mHandler.sendEmptyMessageDelayed(MESS, 2000); } public MyPath(Context context) { super(context); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); mWidth=getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); mHeight=getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); //在屏幕上创建一个画板 mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); mBitmapCanvas = new Canvas(mBitmap); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画外面的圆形 mBitmapCanvas.drawCircle(300, 300,150, mPaintPoint); mPath.reset(); //用锯齿线去画一个矩形,然后填充满矩形 mPath.moveTo(500, 450-mProgress*3); mPath.lineTo(500, 500); mPath.lineTo(count, 500); mPath.lineTo(count, 450-mProgress*3); for(int i=0;i<10;i++){ mPath.rQuadTo(20, 8, 40, 0); mPath.rQuadTo(20, -8, 40, 0); } mPath.close(); mBitmapCanvas.drawPath(mPath,mPaint); canvas.drawBitmap(mBitmap, 0,0, null); canvas.drawText(mProgress+"%", 300, 300, mPaintText ); }}
布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:view="http://schemas.android.com/apk/res/com.test.mypathview" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- 在上面导入自己的样式,跟自己的包名,并定义名字,然后根据名字使用自己定义的属性--> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button"/> <!--在布局文件中使用自己定义的属性--> <com.test.mypathview.MyPath android:id="@+id/progress" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:id="@+id/textview" android:layout_width="200dp" android:layout_height="200dp" android:layout_centerInParent="true" android:gravity="center" android:text="A" android:textSize="100sp" /></RelativeLayout>
效果图
0 0
- 游走型进度条(桌面360)
- hnoi2013游走 (高斯消元)
- (未完成)随机游走模型
- 随机游走模型(Random Surfer Model)
- 6.2.4 随机游走(Random Walk)
- 随机游走模型(Random Surfer Model)
- [BZOJ3143][Hnoi2013]游走(概率期望+高斯消元)
- BJ模拟(2) D2T2 随机游走
- bzoj 3143 hnoi2013 游走(高斯消元)
- 高斯消元裸题(期望)——【HNOI2013】游走
- 重启随机游走算法(RWR)
- BZOJ 3143 游走 (高斯消元 贪心)
- bzoj 3143: [Hnoi2013]游走(高斯消元)
- [BZOJ3143][HNOI2013]游走(高斯消元解期望方程)
- 个性化首页——踩着桌面,游走在云端的开始
- 【JAVA】Java桌面程序绘制进度条
- NKOJ 2266 (HNOI 2013)游走(高斯消元+数学期望)
- 游走Android系列之广播接收(Broadcast Receiver)
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转
- Linux2.6.32驱动笔记(4)ioctl方法解析及mini2440-led驱动实现
- 设置div高度等于动态宽度
- SQL SERVER 建临时表、循环插入数据、游标遍历数据库
- hdu 5442 (后缀数组)
- 游走型进度条(桌面360)
- 易优家王新军:23年国际创业史,掀起中国家庭密实袋革命
- Math List
- 服务器池化
- android studio下使用getclassloader().getresourceasstream()的问题
- UVa10340
- 黑马程序员---Java基础---多线程
- JAVA设计模式之观察者模式
- 软键盘遮盖