这次我们讲的不是新手教程,如果你不知道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。然后就是看不懂,不会做。
所以大部分要自己理解,别人的看多了,就会形成思维定势。有时候可以想想,我是这么实现的,你可以换一种比我还简单的方式实现这个功能或者说是你有什么更好的方式实现这个功能。
好了,今天的话有点多,呵呵,就到这里把。祝大家五一玩的愉快。