源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android中创建一个透明的进度对话框实例

  • 时间:2020-03-13 20:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中创建一个透明的进度对话框实例
首先我们看一下什么叫做透明的进度对话框: [img]http://files.jb51.net/file_images/article/201405/20145691526695.png?2014469161[/img] 接下来我们讲一下如何创建: 1、使用Eclipse创建一个新的Andr​​oid 项目,使用Android 2.2或以上。 2、在/res/layout文件夹,创建线性布局activity_main.xml文件,主要是为了添加一个文本标签和一个按钮
[u]复制代码[/u] 代码如下:
activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical">     <TextView         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:gravity="center_horizontal"         android:padding="8dp"         android:textSize="20sp"         android:text="Transparent Progress Indicator" />     <Button         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="Check it out!"         android:layout_marginTop="40dp"         android:layout_gravity="center"         android:id="@+id/the_button" /> </LinearLayout>
3、在/res/values中打开styles.xml,在这里将添加透明对话框的样式。请务必指定父属性,否则你在运行时会出现问题
[u]复制代码[/u] 代码如下:
styles.xml <resources>     <!--         Base application theme, dependent on API level. This theme is replaced         by AppBaseTheme from res/values-vXX/styles.xml on newer devices.     -->     <style name="AppBaseTheme" parent="android:Theme.Light">         <!--             Theme customizations available in newer API levels can go in             res/values-vXX/styles.xml, while customizations related to             backward-compatibility can go here.         -->     </style>     <!-- Application theme. -->     <style name="AppTheme" parent="AppBaseTheme">         <!-- All customizations that are NOT specific to a particular API-level can go here. -->     </style>     <!--  Transparent dialog -->     <style name="TransparentProgressDialog" parent="@android:Theme.Dialog">         <item name="android:windowFrame">@null</item>         <item name="android:windowBackground">@android:color/transparent</item>         <item name="android:windowIsFloating">true</item>         <item name="android:windowContentOverlay">@null</item>         <item name="android:windowTitleStyle">@null</item>         <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>         <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>         <item name="android:backgroundDimEnabled">true</item>         <item name="android:background">@android:color/transparent</item>     </style> </resources>
4、 在/res中间添加一个动态旋转的动画图片: [img]http://files.jb51.net/file_images/article/201405/20145691619070.png?20144691632[/img] 5、现在可以实现您的MainActivity.java文件了
[u]复制代码[/u] 代码如下:
MainActivity.java package com.authorwjf.transparentprogressdialog; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends Activity implements OnClickListener {  private TransparentProgressDialog pd;  private Handler h;  private Runnable r;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activity_main);   h = new Handler();   pd = new TransparentProgressDialog(this, R.drawable.spinner);   r =new Runnable() {    @Override    public void run() {     if (pd.isShowing()) {      pd.dismiss();     }    }   };   findViewById(R.id.the_button).setOnClickListener(this);  }  @Override  public void onClick(View v) {   pd.show();   h.postDelayed(r,5000);  }  @Override  protected void onDestroy() {   h.removeCallbacks(r);   if (pd.isShowing() ) {    pd.dismiss();   }   super.onDestroy();  } }
6、以下是实现透明动画的代码
[u]复制代码[/u] 代码如下:
private class TransparentProgressDialog extends Dialog {  private ImageView iv;  public TransparentProgressDialog(Context context, int resourceIdOfImage) {   super(context, R.style.TransparentProgressDialog);          WindowManager.LayoutParams wlmp = getWindow().getAttributes();          wlmp.gravity = Gravity.CENTER_HORIZONTAL;          getWindow().setAttributes(wlmp);   setTitle(null);   setCancelable(false);   setOnCancelListener(null);   LinearLayout layout = new LinearLayout(context);   layout.setOrientation(LinearLayout.VERTICAL);   LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);   iv = new ImageView(context);   iv.setImageResource(resourceIdOfImage);   layout.addView(iv, params);   addContentView(layout, params);  }  @Override  public void show() {   super.show();   RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f);   anim.setInterpolator(new LinearInterpolator());   anim.setRepeatCount(Animation.INFINITE);   anim.setDuration(3000);   iv.setAnimation(anim);   iv.startAnimation(anim);  } }
最后的结果是 [img]http://files.jb51.net/file_images/article/201405/20145691647527.jpg?2014469176[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部