在自定义组件时,从已有组件源码中会很大收获。
就拿progressDialog来说
     间接父类是dialog,想了解dialog继承结构可以去百度,或者
    从构造器来说ProgressDialog(Context context, int theme)很明显需要个样式主题文件,我们可以在value文件下自定义一个样式文件。
   从外观上需要个动态效果控件和文本框两个属性
    ProgressBar mProgress;   TextView mMessageView
源码中onCreate()方法中 有
     View view = inflater.inflate(R.layout.alert_dialog_progress, null);//来加载布局文件
     setView(view);
    动态效果是由ProgressBar实现,当然我们可以通过给图片添加动态效果也可以实现类似功能,这就需要个anim文件
从上可以总结出创建自定义dialog需要的步骤
 1.继承dialog
 2.一个主题样式文件
 3.一个布局文件来加载
 4.一个anim文件

代码:public class IphoneProgersssDialog extends Dialog {
   private Context context;
   private ImageView img;
   private TextView txt;
       public IphoneProgersssDialog(Context context) {
               super(context, R.style.iphone_progress_dialog);
               this.context=context;
               //加载布局文件
               LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
               View  view=inflater.inflate(R.layout.iphone_progress_dialog, null); 
               img=(ImageView) view.findViewById(R.id.iphone_progress_dialog_img);
               txt=(TextView) view.findViewById(R.id.iphone_progress_dialog_txt);
               //给图片添加动态效果
               Animation anim=AnimationUtils.loadAnimation(context, R.anim.progressbar);
               img.setAnimation(anim);
               txt.setText(R.string.iphone_progressbar_dialog_txt);
               //dialog添加视图
               setContentView(view);

}

public void setMsg(String msg){
               txt.setText(msg);
       }
       public void setMsg(int msgId){
               txt.setText(msgId);
       }

}

看了下pregeressdialog中像activity类一样都有生命周期函数,其实dialog和activity都是窗体概念并不是api中window类,有个地方还是不明白,希望哪位以后版主有针对setcontentview 和setview的话题。
  现在我们就做个iphone风格的进度条吧!

1.继承
    public class IphoneProgersssDialog extends Dialog 
2.定义主题样式 
   在value资源文件下
    <style name="iphone_progress_dialog" parent="@android:style/Theme.Dialog">
     <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无--> 
     <item name="android:windowIsFloating">true</item><!-- 是否漂现在activity上-->
     <item name="android:windowIsTranslucent">true</item><!-- 是否半透明 -->
     <item name="android:windowNoTitle">true</item>
     <item name="android:backgroundDimEnabled">false</item><!-- dim:模糊的 阴影效果 -->
     <item name="android:windowBackground">@drawable/load_bg</item><!-- 背景图片的大小也影响窗口的大小 -->
   </style>

在构造器中   super(context, R.style.iphone_progress_dialog);
3.定义动画文件  progressbar.xml
  <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false" >
<rotate 
       android:interpolator="@android:anim/linear_interpolator"
       android:pivotX="50%"
       android:pivotY="50%"
       android:fromDegrees="0"
       android:toDegrees="+360"
       android:duration="1000"
       android:startOffset="-1"
       android:repeatMode="restart"
       android:repeatCount="-1"/>

</set>
给图片加载动画
Animation anim=AnimationUtils.loadAnimation(context, R.anim.progressbar);
 img.setAnimation(anim);

最后就是setContentview;没有去分析setView的区别

图片不晓得我只上传不了,也许是浏览器的原因吧。

使用方法:

new IphoneProgersssDialog ().show();

Android创建自定义dialog方法详解-样式去掉阴影效果的更多相关文章

  1. Android源码下载方法详解

    转自:http://www.cnblogs.com/anakin/archive/2011/12/20/2295276.html Android源码下载方法详解 相信很多下载过内核的人都对这个很熟悉 ...

  2. Android -- TextView、button方法详解(1)

    1.TextView常规方法 TextView myTextView=null; //声明变量 myTextView=(TextView)findViewById(R.id.myTextView); ...

  3. Android SDK离线安装方法详解(加速安装) 转

    AndroidSDK在国内下载一直很慢··有时候通宵都下不了一点点,最后只有选择离线安装,现在发出离线安装地址和方法,希望对大家有帮助! 离线安装包下载地址:http://dl.vmall.com/c ...

  4. 【转】Android 创建AVD各参数详解

    一.Eclipse中图形创建AVD: Device: 即设备,指具体的手机设备型号,可以在window->Android Virtual Device Manager->Device De ...

  5. Android SDK离线安装方法详解(加速安装)

    AndroidSDK在国内下载一直很慢··有时候通宵都下不了一点点,最后只有选择离线安装,现在发出离线安装地址和方法,希望对大家有帮助 一,首先下载SDK的安装包,android-sdk_r10-wi ...

  6. Android中的onWindowFocusChanged()方法详解

    Android中获取手机屏幕的高度和宽度,我们知道在onCreate方法中获取到的值都是为0的,有人说可以在onClick方法中获取值,这个也是个方法 ,但在onWindowFocusChanged方 ...

  7. android开发之onCreate( )方法详解

    这里我们只关注一句话:This is where you should do all of your normal static set up.其中我们只关注normal static,normal: ...

  8. android之Activity.startManagingCursor方法详解

    在使用数据库操作查询数据后,如果是在Activity里面处理,那么很可能就会用到startManagingCursor()方法,在这里讲一下它的作用和使用注意事项. 调用这个方法,就是将获得的Curs ...

  9. Android -- TextView、button方法详解(2)

    1. button按下状态的改变 Button bt1 = null; // 声明按钮对象 bt1 = (Button) findViewById(R.id.button1); // 获取按钮对象 b ...

随机推荐

  1. spring+springMVC+mybatis的框架项目基础环境搭建

    上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合. 虽然在之前activiti相关的学习中所用到的框架也是这 ...

  2. JavaScript 设置、读取Cookie

    1.设置Cookie //设置cookie function setCookie(cookieName, cookieValue, cookieExpires, cookiePath) { cooki ...

  3. Navicat(连接) -1之SSL 设置

    SSL 设置 Secure Sockets Layer(SSL) 是一个通过网际网路传输私人文件的协定.为了安全连接,首先你需要做的是安装 OpenSSL 库和下载数据库源. 注意: 只限于 MySQ ...

  4. PLSQL_闪回删除FlashBack Delete表误删除如何进行恢复(案例)

    2014-07-02 Created By BaoXinjian

  5. HDU Count the string+Next数组测试函数

    链接:http://www.cnblogs.com/jackge/archive/2013/04/20/3032942.html 题意:给定一字符串,求它所有的前缀出现的次数的和.这题很纠结,一开始不 ...

  6. iframe替代方案

    自己写一个pagelet框架.封装成JSP的Taglib. <tms:view header="common-header" footer="common-foot ...

  7. 【Java】图片高质量缩放类

    package com.test; import com.sun.image.codec.jpeg.JPEGImageEncoder; import com.sun.image.codec.jpeg. ...

  8. mysql索引之四(索引使用注意规则:索引失效--存在索引但不使用索引)

    但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况: 1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全 ...

  9. ios8消息快捷处理——暂无输入框

    if (isiOS8) { //ios8的远程推送注册 NSSet *set = nil; #if 1 //1.创建消息上面要添加的动作(按钮的形式显示出来) UIMutableUserNotific ...

  10. 三种主流的WebService实现方案(REST/SOAP/XML-RPC)简述及比较

    目前知道的三种主流的Web服务实现方案为:REST:表象化状态转变 (软件架构风格)SOAP:简单对象访问协议 XML-RPC:远程过程调用协议 简单介绍: REST:表征状态转移(Represent ...