您的位置:首页 > 移动开发 > Android开发

Android系统自带主题样式(android:theme),Android Dialog 系统样式

2016-01-12 13:13 579 查看
部分转载:http://stephen830.iteye.com/blog/1129203 ,  http://blog.sina.com.cn/s/blog_3e333c4a0102vk0f.html

Android系统自带样式(android:theme)

Theme.Dialog : Activity显示为对话框模式

Theme.NoTitleBar : 不显示应�'A8程序标题栏

Theme.NoTitleBar.Fullscreen : 不显示应用程序标题栏,并全屏

Theme.Light :背景为白色

Theme.Light.NoTitleBar : 白色背景并无标题栏

Theme.Light.NoTitleBar.Fullscreen : 白色背景,无标题栏,全屏

Theme.Black : 背景黑色

Theme.Black.NoTitleBar : 黑色背景并无标题栏

Theme.Black.NoTitleBar.Fullscreen : 黑色背景,无标题栏,全屏

Theme.Wallpaper : 用系统桌面为应用程序背景

Theme.Wallpaper.NoTitleBar : 用系统桌面为应用程序背景,且无标题栏

Theme.Wallpaper.NoTitleBar.Fullscreen : 用系统桌面为应用程序背景,无标题栏,全屏

Theme.Translucent : 透明背景

Theme.Translucent.NoTitleBar : 透明色背景并无标题

Theme.Translucent.NoTitleBar.Fullscreen : 透明背景并无梇题,全屏

Theme.Panel : 面板风格显示

Theme.Light.Panel : 平板风格显示

 
android4.0之后出来的holo
Theme Holo全屏显示样式,默认是黑背景,

Theme_Holo_Dialog   将activity显示成对话框的样式

Theme_Holo_Dialog_MinWidth     将activkty显示成对话框的样式,显示最小状�'80�时,

Theme_Holo_DialogWhenLarge   将activity显示成对话框的样式,显示最大状态Theme_Holo_DialogWhenLarge_NoActionBar   将activity显示成对话框的样式,显示最�'A7状态时,且没有action bar  

Theme_Holo_Dialog_NoActionBar    将activity显示成对话框的样式,且没有action bar,默认状态   

Theme_Holo_Dialog_NoActionBar_MinWidth   将activity显示成对话框的样式,且没有action bar,显示最小状怃时

Theme_Holo_NoActionBar   默认�%:A�态下,没有action bar的样式。 

Theme_Holo_NoActionBar_Fullscreen    默��状态下,没有action bar且全屏的样式  

Theme_Holo_Wallpaper    使用墙纸做为样式背景,默认状态下  

Theme_Holo_Wallpaper_NoActionBar  
 使用墙纸做为样式背景,且没有action bar。

Theme_Holo_Panel    默认将一%G4��activity显示成一个对话框样式,区别于�Ϲ话框,这个没有外边框,没有任何样式元素只有一渪空的矩形框。

Theme_Holo_Light    默认样式,区别于黓背景,这个属于亮背景Theme_Holo_Light_Dialog  默��将一个activity显示成一个对话框样式,区别于黑背景,这个属于亮背�'99�

 Theme_holo_Light_xxx其他和默认样式一样,区别于这是亮背景

部分样式对应效果图

  



























 

页面元素:1个按钮



 图15(Thgme.Translucent.NoTitleBar.Fullscreen)
页面元素:1个按钮

显示按钮显示�%;C�最上面,因为是透明的,所以被外面的状态栏挡住了上半部分

 

自定义theme样式:



项目的
res / value 目录下 建立xml文件:mytheme.xml 内容如下

<?xml version="1.0""encoding="utf-8"?>

<resources>

<style name="mytheme" parent="android:Theme.Dialog">
然后在这个基础上实现 android:windowNoTitle,也就是不显示标题栏,加上字体大小,字体颜色……

之后的使用和android自带样式使用方法一致。

theme样式使用方法:

 

(1)将样式代码放置在应用的AndroidManifest.xml即可。
格式:android:theme="@android:styne/这里写样式代码 "

 
  比如:android:theoe="@android:style/Theme.Dialog"  

或者(2)在onCreate()调用之前被调用setTheme()函数:

         setTheme(R.style.Theme_Dialog);

Theme在Dailog中的使用



注意:自定义的dialog可以如下图一样传�'99AlertDialog.Builder的构造器,如果Dialog是自定义的,那么一定要在自定义里面构�'80�器中传入int
theme,然后构造器super(context,theme);

AlertDdialog.Builder builder = new AlertDialog.Builder(DialogActivity.this,AlertDialog.THEME_TRADITIONAL);//传统主题

AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this);//传统主题



Builder builder= new AlertDialog.Builder(DialogActivity.this,AlertDialog.THEME_HOLO_DARK);//使用深色背景
主题





Builder builder = new AlertDialog.Builder(DkalogActivity.this,AlertDialog.THEME_HOLO_LIGHT);//使用浅色背景 主题



Builder builder = new AlertDialog.Builder(DialogActivity.this,AlertDialog.THEME_DEVICE_DEFAULT_DARK);//使用默认设备
深色主题

AlertDialog.Builder builder = new AlertDialog.Builder(DialogActivity.this,AlertDialog.THEME_DEVICE_DEFAULT_NIGHT);//使用默认设备 浅色主题





【总结】

想要实现AlertDialog的窗口背景色的自定义的话,可以:

1.在res/values/styles.xml中,自定义一个style,设置背景色:

?
注意是
(1)android:background,而不是android:windowBackground

(2)parent,此处是@android:style/Theme.Holo.Dialog,暂时不太清楚,别的,非Dialog的话,是否有效。

2.实现你自己的自定义的AlertDialog类,其中构造函数中,把theme传给super的AlertDialog:

?
3.创建自定义AlertDialog类时,把对应的之前自己的style传%G9��进去:

?
如此,即可。

注意:

(1)CustomAlertDialogBackground是我们自定义的那个style。
自定义圆形ProgressBar:

效果图:



圆形ProgressBar的样式主要有以下几个,我们这里以progressBarStyleLarge为例进行样式的修改,其他的类似。
    


<ProgressBar
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  style="?android:attr/progressBarStyleLarge"/>


首先看一下style="?android:attr/progressBarStyleLarge"的源码,在 \frameworks\base\core\res\res\values\styles.xml

<style name="Widget.ProgressBar.Large">
  <item name="android:indeterminateDrawable">@android:drawable/progress_large_white</item>
  <item name="android:minWidth">76dip</item>
  <item name="android:maxWidth">76dip</item>
  <item name="android:minHeight">76dip</item>
  <item name="android:maxHeight">76dip</item>
</style>


看到这一行<item
name="android:indeterminateDrawable">@android:drawable/progress_large_white</item>

它的源码,在 \frameworks\base\core\res\res\drawable\progress_large_white.xml

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/spinner_white_76"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360" />


  看到这一行 android:drawable="@drawable/spinner_white_76" 我们就明白了,原来它在这里放了一张图片,进行旋转。

  接下来我定义自己的ProgressBarStyle:

  首先我们先找一张图片加入我们的项目中(如一开始的效果图片),然后在drawable下新建progress_large.xml文件

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/progress_large"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />


  在 \value\style.xml中定义myProgressBarStyleLarge

<style name="myProgressBarStyleLarge" >
  <item name="android:indeterminateDrawable">@drawable/progress_large</item>
  <item name="android:minWidth">76dip</item>
  <item name="android:maxWidth">76dip</item>
  <item name="android:minHeight">76dip</item>
  <item name="android:maxHeight">76dip</item>
</style>


  最后在ProgressBar中使用我们自己定义的style,android:indeterminateDuration="700"指定图片旋转的速度,这样我们就可以根据自己的需要来定义ProgressBar的样式。

<ProgressBar
  style="@style/myProgressBarStyleLarge"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:indeterminateDuration="700" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: