Android ProgressBar 自定义样式(七),仿真QQ聊天、网易新闻客户端加载图片Loading
2013-06-05 20:03
429 查看
先上图,有图有真相:
其实也很简单,也是用了一下投机取巧的方法,大家有更多的方法的话,可以和我交流一下。
xml布局文件如下:
自定义的View如下:
测试Activity类如下:
大家是不是觉得很简单啊,哈哈
转载请标明出处
其实也很简单,也是用了一下投机取巧的方法,大家有更多的方法的话,可以和我交流一下。
xml布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" > <com.freesonfish.progress_bar.MyProgressBar4 android:id="@+id/my_progress_bar_4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> </LinearLayout>
自定义的View如下:
package com.freesonfish.progress_bar; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Shader; import android.graphics.SweepGradient; import android.util.AttributeSet; import android.view.View; public class MyProgressBar4 extends View { private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); private Shader mShader; private float x = 50.0f, y = 50.0f; private float swap = 0.02f; private Matrix mMatrix = new Matrix(); private Paint tPaint = new Paint(); private String value = ""; private Rect rect = new Rect(); public MyProgressBar4(Context context, AttributeSet attr) { super(context, attr); initPaint(); } public MyProgressBar4(Context context) { super(context); initPaint(); } private void initPaint() { mShader = new SweepGradient(x, y, new int[] { 0xFFFF0000, 0xCCCCCCCC }, new float[] { 1.0f, swap }); mMatrix.setRotate(-90, x, y); mShader.setLocalMatrix(mMatrix); mPaint.setShader(mShader); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(7); mPaint.setAntiAlias(true); tPaint.setColor(Color.GREEN); tPaint.setTextSize(16); } private void resetShader() { mShader = new SweepGradient(x, y, new int[] { 0xFFFF0000, 0xCCCCCCCC }, new float[] { 1.0f, swap }); mShader.setLocalMatrix(mMatrix); mPaint.setShader(mShader); } @Override protected void onDraw(Canvas canvas) { Paint paint = mPaint; canvas.drawText(value, x - rect.centerX(), y - rect.centerY(), tPaint); canvas.drawCircle(x, y, 30, paint); } public void changeProgressValue() { swap += 0.08f; int swapValue = (int)(swap * 100f); value = (swapValue > 100 ? 100 : swapValue) + "%"; tPaint.getTextBounds(value, 0, value.length(), rect); resetShader(); invalidate(); } public float getSwapValue() { return swap; } }
测试Activity类如下:
package com.freesonfish.progress_bar; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import com.freesonfish.R; public class MyprogressBarActivity4 extends Activity { MyProgressBar4 progressBar = null; Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (progressBar.getSwapValue() <= 1.0f) { progressBar.changeProgressValue(); handler.sendEmptyMessageDelayed(0, 500); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.my_progress_bar_4); progressBar = (MyProgressBar4) findViewById(R.id.my_progress_bar_4); handler.sendEmptyMessageDelayed(0, 500); } }
大家是不是觉得很简单啊,哈哈
转载请标明出处
相关文章推荐
- Android ProgressBar 自定义样式(七),仿真QQ聊天、网易新闻客户端加载图片Loading
- Android ProgressBar 自定义样式(六),仿真QQ pad版加载(位置居中)
- Android ProgressBar 自定义样式(二),仿原来新浪微博图片加载样式
- Android中实现加载样式图片自定义
- Android中自定义加载样式图片的具体实现
- 【android开发】CheckBox加载自定义选中与未选中图片样式
- 渐进填充图片的自定义loading加载样式
- Android 帧动画实现自定义loading加载框
- Android 自定义progressBar样式
- Flex :自定义Loading载入状态(含图标) 及解决Flex中GIF动画图片加载时显示动起来
- Android 自定义ProgressBar--进度自己设置图片
- android客户端加载网络大图片如何避免内存溢出的两种方法
- Android广告图片轮播控件,支持无限循环和5种主题,可以灵活设置轮播样式、时间、位置、图片加载框架等!
- Android 自定义ProgressBar样式
- Android万能下拉刷新,上拉加载。支持自定义样式!!!
- JTextPane的例子,模拟聊天客户端,演示了为每段文字设置字体、字号、样式、颜色、背景色和插入图片功能
- Android自定义图片加载框架
- Android ProgressBar自定义图片进度,自定义渐变色进度条
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- Android图片加载框架最全解析(六),探究Glide的自定义模块功能