一 自定义progressbar
<1>素材:逐帧图片若干张(根据自己loading组件的特点制作)
<2>定义每张图片的显示的顺序及时间(定义帧动画列表)
在res/drawable目录下, 创建一根标签为“animation-list”的xml文件,名称为:myloading.xml
<3>定义progressbar布局
在res/layout目录下创建一名称为:progressbar_item.xml的文件,具体内容如下:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
android:id="@+id/myloading_image_id"
android:layout_width="50dip"
android:layout_height="50dip"
android:layout_marginLeft="50dip"
android:layout_marginTop="5dip"
android:src="@drawable/myloading" />
android:id="@+id/mylaodint_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_marginLeft="18dip"
android:text="正在加载,请稍后..."
/>
<4>在自定义ProgressBarItem,java类中加载progressbar_item.xml,并启动动画,
具体内容如下:
package com.example.myprogressbar.progressbar;
import com.example.myprogressbar.R;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class ProgressBarItem extends LinearLayout
{
public ProgressBarItem(Context context)
{
super(context);
init( context);
}
public ProgressBarItem(Context context, AttributeSet attrs)
{
super(context, attrs);
init( context);
}
public ProgressBarItem(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init( context);
}
private void init(Context context)
{
LayoutInflater inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View progressBarItemView=(View)inflater.inflate(R.layout.progressbar_item, null);
addView(progressBarItemView);
ImageView progressImageView=(ImageView)this.findViewById(R.id.myloading_image_id);
AnimationDrawable animationDrawable = (AnimationDrawable) progressImageView.getDrawable();
animationDrawable.start();
}
}
二 使用自定义的progressbar组件
<1>创建一Activity,及对应的布局文件:main_activity.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dip"
tools:context=".MainActivity" >
android:id="@+id/begin_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始"
/>
android:id="@+id/end_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/begin_button_id"
android:layout_marginLeft="15dip"
android:text="结束"
/>
android:id="@+id/myloading_item_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:layout_centerHorizontal="true"
android:layout_below="@id/end_button_id"
android:visibility="invisible"
/>
//---activity文件名称为:MainActivity
package com.example.myprogressbar;
import com.example.myprogressbar.progressbar.ProgressBarItem;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity
{
ProgressBarItem progressBar;
Button startButton;
Button endButton;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar=(ProgressBarItem)this.findViewById(R.id.myloading_item_id);
startButton=(Button)this.findViewById(R.id.begin_button_id);
endButton=(Button)this.findViewById(R.id.end_button_id);
startButton.setOnClickListener(ocl);
endButton.setOnClickListener(ocl);
}
private View.OnClickListener ocl=new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.begin_button_id:
progressBar.setVisibility(View.VISIBLE);
break;
case R.id.end_button_id:
progressBar.setVisibility(View.GONE);
break;
}
}
};
}
运行上面的程序,可以发现:1当“开始”按钮按下时,自定义loading显示,并运行。 2 当“结束”按钮按下时,自定义loading消失。
三源码下载地址:http://download.csdn.net/detail/swiftwoft/4958207