Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 661|回复: 0

自定义LoadingDialog

[复制链接]

该用户从未签到

发表于 2012-3-23 11:51:28 | 显示全部楼层 |阅读模式
看惯了系统自带的Dialog的同学们可以试着尝试自己做一个LoadingDialog。
效果图:

代码如下:
CustomerLoading.java
    [li]package com.eric;[/li][li]import android.app.Activity;[/li][li]import android.os.Bundle;[/li][li]import android.widget.LinearLayout;[/li][li]import android.widget.TextView;[/li][li][/li][li]public class CustomerLoading extends Activity {[/li][li]private LinearLayout mLoad;[/li][li]@Override[/li][li]public void onCreate(Bundle savedInstanceState) {[/li][li]super.onCreate(savedInstanceState);[/li][li]setContentView(R.layout.main);[/li][li]ViewHandler.creteProgressDialog(this, "loading");[/li][li]}[/li][li]}
    [/li]

复制代码
这个类应该是这个知识点的重点,重画View图像,达到转动效果.
LoadingView.java:
    [li]package com.eric;[/li][li]import android.content.Context;[/li][li]import android.graphics.Bitmap;[/li][li]import android.graphics.BitmapFactory;[/li][li]import android.graphics.Canvas;[/li][li]import android.graphics.Matrix;[/li][li]import android.os.Handler;[/li][li]import android.util.AttributeSet;[/li][li]import android.view.View;[/li][li][/li][li]public class LoadingView extends View {[/li][li]private Matrix mFgMatrix;[/li][li]private Bitmap mFgBitmap;[/li][li]public LoadingView(Context context) {[/li][li]super(context);[/li][li]}[/li][li]public LoadingView(Context context, AttributeSet attrs) {[/li][li]super(context, attrs);[/li][li]}[/li][li]public void setDrawableResId(int iconResId) {[/li][li]mFgMatrix = new Matrix();[/li][li]mFgBitmap = BitmapFactory.decodeResource(getResources(), iconResId);[/li][li]myHandler.sendEmptyMessage(0);[/li][li]onMeasure(mFgBitmap.getWidth(), mFgBitmap.getHeight());[/li][li]}[/li][li][/li][li]@Override[/li][li]protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {[/li][li]setMeasuredDimension(mFgBitmap.getWidth(), mFgBitmap.getHeight());[/li][li][/li][li]package com.eric;[/li][li]import android.content.Context;[/li][li]import android.graphics.Bitmap;[/li][li]import android.graphics.BitmapFactory;[/li][li]import android.graphics.Canvas;[/li][li]import android.graphics.Matrix;[/li][li]import android.os.Handler;[/li][li]import android.util.AttributeSet;[/li][li]import android.view.View;[/li][li][/li][li]public class LoadingView extends View {[/li][li]private Matrix mFgMatrix;[/li][li]private Bitmap mFgBitmap;[/li][li]public LoadingView(Context context) {[/li][li]super(context);[/li][li]}[/li][li]public LoadingView(Context context, AttributeSet attrs) {[/li][li]super(context, attrs);[/li][li]}[/li][li]public void setDrawableResId(int iconResId) {[/li][li]mFgMatrix = new Matrix();[/li][li]mFgBitmap = BitmapFactory.decodeResource(getResources(), iconResId);[/li][li]myHandler.sendEmptyMessage(0);[/li][li]onMeasure(mFgBitmap.getWidth(), mFgBitmap.getHeight());[/li][li]}[/li][li][/li][li]@Override[/li][li]protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {[/li][li]setMeasuredDimension(mFgBitmap.getWidth(), mFgBitmap.getHeight());[/li][li]}[/li][li]@Override[/li][li]protected void onDraw(Canvas canvas) {[/li][li]canvas.drawBitmap(mFgBitmap, mFgMatrix, null);[/li][li]}[/li][li][/li][li]private Handler myHandler = new Handler() {[/li][li]public void handleMessage(android.os.Message msg) {[/li][li]mFgMatrix.postRotate(-10f, mFgBitmap.getWidth() / 2f, mFgBitmap[/li][li].getHeight() / 2f);[/li][li]invalidate();//更新视图[/li][li]myHandler.sendEmptyMessageDelayed(msg.what, 20);[/li][li]};[/li][li]};[/li][li]}[/li][li][/li][li][/li][li][/li][li]}[/li][li]@Override[/li][li]protected void onDraw(Canvas canvas) {[/li][li]canvas.drawBitmap(mFgBitmap, mFgMatrix, null);[/li][li]}[/li][li][/li][li]private Handler myHandler = new Handler() {[/li][li]public void handleMessage(android.os.Message msg) {[/li][li]mFgMatrix.postRotate(-10f, mFgBitmap.getWidth() / 2f, mFgBitmap[/li][li].getHeight() / 2f);[/li][li]invalidate();//更新视图[/li][li]myHandler.sendEmptyMessageDelayed(msg.what, 20);[/li][li]};[/li][li]};[/li][li]}
    [/li]

复制代码
这个类主要是实现一个ProgressDialog效果的进度条框.
ViewHandler.java:
    [li]package com.eric;[/li][li]import android.app.ProgressDialog;[/li][li]import android.content.Context;[/li][li]import android.widget.LinearLayout;[/li][li]import android.widget.TextView;[/li][li]public class ViewHandler {[/li][li]public static ProgressDialog creteProgressDialog(Context context,[/li][li]String text) {[/li][li]final ProgressDialog dlg = new ProgressDialog(context);[/li][li]dlg.show();[/li][li]dlg.setContentView(R.layout.loading);[/li][li]LinearLayout root = (LinearLayout) dlg[/li][li].findViewById(R.id.progressDialog);[/li][li]root.setGravity(android.view.Gravity.CENTER);[/li][li][/li][li]LoadingView mLoadView = new LoadingView(context);[/li][li]mLoadView.setDrawableResId(R.drawable.icon10);[/li][li]root.addView(mLoadView);[/li][li]TextView alert = new TextView(context);[/li][li]alert.setText(text);[/li][li]root.addView(alert);[/li][li]return dlg;[/li][li]}[/li][li]}
    [/li]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 22:37 , Processed in 0.405429 second(s), 47 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表