ProgressDialog的实现

这次我们讲的不是新手教程,如果你不知道progress和Animation的话。可以洗洗睡了。
前两天一个朋友做项目需要用到progressdialog,就让我帮他做一个。一开始以为很简单,后来发现并不是那么的简单,最后在别人的帮助下,也算做出来了。
网上的progressdialog我也看过,不过找到的全是一个模子刻出来的。反正我没看懂。
话不多说,下面来看看我的(大多是别人帮我写的,不过我还是理解了)。
activitymain.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

</LinearLayout>

自定义一个myview的布局,里面是一个图片和一个textview,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:gravity="center" >

    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/progress_1" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="正在加载..."
        android:textSize="20dp" />

</LinearLayout>

为了方便我们调用,所以我们的主函数就是一个调用,代码如下:

package com.example.progressdialog;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private View myView;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        MyDialog myDialog = new MyDialog(this);
        myDialog.show();
        // myDialog.hide();//隐藏dialog
    }
}

MyDialog的代码如下:

package com.example.progressdialog;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MyDialog {
    private Dialog dialog;
    private View myView;
    private ImageView image;

    public MyDialog(Context context) {
        LayoutInflater factory = LayoutInflater.from(context);
        myView = factory.inflate(R.layout.myview, null);
        image = (ImageView) myView.findViewById(R.id.img);
        dialog = new AlertDialog.Builder(context)
                .setIcon(R.drawable.progress_1).setView(myView).create();
        Animation animation = AnimationUtils.loadAnimation(context,
                R.anim.load_animation);
        // 使用ImageView显示动画
        image.startAnimation(animation);
    }

    // 显示dialog
    public void show() {
        dialog.show();
    }

    // 隐藏dialog
    public void hide() {
        if (dialog.isShowing())
            dialog.hide();
    }

}

这边涉及到一个图片旋转的动画,定义一个load_animation。代码如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <rotate
        android:duration="1500"
        android:fromDegrees="0"
        android:interpolator="@android:anim/linear_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="-1"
        android:repeatMode="restart"
        android:toDegrees="+360" />

</set>

效果图:
这里写图片描述
在这里呢,我提醒大家,不要光看网上代码,要自己想,自己理解。我之前就是看多了网上关于progressdialog的代码。第一步就是想到和网上一样继承一个dialog实现这个progressdialog。然后就是看不懂,不会做。
所以大部分要自己理解,别人的看多了,就会形成思维定势。有时候可以想想,我是这么实现的,你可以换一种比我还简单的方式实现这个功能或者说是你有什么更好的方式实现这个功能。
好了,今天的话有点多,呵呵,就到这里把。祝大家五一玩的愉快。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值