`
007007jing
  • 浏览: 42694 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

android2.3 api demo 学习系列(3)--App/Activity/Custom Dialog

阅读更多

apidemos里面展示的自定义窗口其实并不复杂,下面我们来看一下:

1、CustomDialogActivity和别的activity并没有区别

2、activity在项目AndroidManifest.xml配置文件中加入 android:Theme属性 例如示例:

 

<activity android:name=".app.activity.CustomDialogActivity" android:label="@string/app_activity_custom_dialog_lable"
              android:theme="@style/Theme.CustomDialog">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="com.angie.apidemos.SAMPLE_CODE" />
            </intent-filter>
</activity>

  3、接下来就是创建theme Theme.CustomDialog。定义Theme 和定义Style 一样, 必须定义在/res/values 子目录下,

 

根元素名为resources,Theme 和Style 的区别在于Theme 应用于Activity 和Application 而 Style 应用于单个的View。

其定义方法是一致的。Style 定义支持 Inheritance, 也就是在定义新风格时可以基于系统定义的风格或是之前定义的风格: 如Theme.CustomDialog 定义就是基于Android 的Dialog 风格(parent)而只修改的WindowsBackground 属性,使用了褐色背景。

定义的theme如下:

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/app_activity_custom_dlg_filled_box</item>
    </style>
</resources>

 

  其中引用了drawable里面的xml文件 其定义的是具体的样式 例如:

 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#f0600000"/>
    <stroke android:width="3dp" color="#ffff8080"/>
    <corners android:radius="3dp" />
    <padding android:left="10dp" android:top="10dp"
        android:right="10dp" android:bottom="10dp" />
</shape>

 

 效果如如下:

SDK中关于Styles and Themes的说明:

样式是规定 VIew和window显示样式的集合. 样式可以指定的属性: height, padding, font color, font size, background color等等.在layout XML文件中我们经常见到下面的定义:

 

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="@string/hello" />

 

   同样我们可以把textview的样式属性单独定义带CodeFont.xml中,在layout中引用如下:

 

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

 主题(theme)是应用到整个 Activity 或者 application的样式, 不是指单个view的样式定义. 如果将一个样式作为主题使用,那么在Activity或者application中得每一个view都会被主题样式影响。比如:CodeFont作为主题应用到Activity或者application,Activity或者application中得text都会变成green monospace font

 

定义Styles

styles的定义文件xml必须保存于 项目res/values/ 中,并且文件的根节点必须是<resources>,类似的定义如下

 

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>
 

 

 注:theme的定义和style一样,主要是看你将其应用在view上还是activity或者application上;

 

同时style的定义支持继承,例如我们定义一个新的style继承自系统已有的style

 

<style name="GreenText" parent="@android:style/TextAppearance">
        <item name="android:textColor">#00FF00</item>
    </style>

 新的GreenText继承自系统已有style TextAppearance,只是修改了文字的颜色。

需要格外注意的是:我们继承系统已有style的时候使用了关键字parent,但是如果需要继承我们自己定义的style的时候就不能使用parent关键字了,sdk中介绍使用 点 举例说明:继承我们自己定义的CodeFont style

 

<style name="CodeFont.Red">
        <item name="android:textColor">#FF0000</item>
    </style>

 

  新的style在使用的时候可以直接使用:@style/CodeFont.Red. 我们可以继续继承新的style来定义style

 

<style name="CodeFont.Red.Big">
        <item name="android:textSize">30sp</item>
    </style>

  新的style继承了CodeFont 和 CodeFont.Red 的所有属性,并且新定义的字体大小属性。

 

 

特别强调:这种使用小数点方式的继承机制只使用于自定义的资源,如果使用android内置的style或者theme必须使用关键字parent

关于style properties建议参考sdk中每个view class 。里面有详细的说明该view支持的属性。

关于已定义的style引用详细清单请参考sdk中得R.attr。其中以window开头的引用只使用与主题(theme),不适用任何一个view。例如 windowBackground 等;

 

接下来我们举例说明style和theme的用法

1.view element 

 

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#00FF00"
    android:typeface="monospace"
    android:text="@string/hello" />

 

 2.view使用已有style

 

<TextView
    style="@style/CodeFont"
    android:text="@string/hello" />

 

  3.将theme应用到activity或者application

 

<application android:theme="@style/CustomTheme">
<activity android:theme="@android:style/Theme.Dialog">

   如果系统的theme并不完全适用于项目,可以像下面这个样子修改theme

 

<color name="custom_theme_color">#b0b0ff</color>
<style name="CustomTheme" parent="android:Theme.Light">
    <item name="android:windowBackground">@color/custom_theme_color</item>
    <item name="android:colorBackground">@color/custom_theme_color</item>
</style>

  然后再使用:

<activity android:theme="@style/CustomTheme">

Select a theme based on platform version

如果想根据不同的平台版本选择主题,加入我们想规定Android 3.0 (API Level 11)或者更高的版本的主题,则可以定义theme.xml 保存在/res/values-v11 文件夹内。

 

<style name="LightThemeSelector" parent="android:Theme.Holo.Light">
    ...
</style>

 注意parent引用的时候使用的引用名称为全称。

 

 

至此我们简单的了解了android的style和theme 更多详细的内容大家还是参考sdk中得说明。谢谢

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 42.6 KB
分享到:
评论

相关推荐

    android api demo讲解

    ### Android API Demo详解 #### 一、概述 本篇文章旨在为初学者提供一套全面而深入的Android API Demo解析,帮助大家更好地理解Android开发中的各种基础知识和技术细节。文章将按照给出的目录顺序,逐一分析每个...

    Android 多种android控件的Demo-IT计算机-毕业设计.zip

    本项目“Android多种android控件的Demo”是一个毕业设计学习资源,旨在帮助开发者熟悉并掌握Android控件的应用。下面将对这个项目中的主要知识点进行详细讲解。 1. **布局管理器(Layouts)**: - **线性布局...

    android api demo

    本文档是关于基于Android 2.3版本的API Demo解析,旨在帮助开发者更好地理解Android应用开发中的各种控件和技术点。通过一系列实例,详细介绍了如何使用Android SDK中的各个功能模块。 #### 二、主要内容概述 文档...

    Android_api_demo

    ### Android API Demo 知识点概述 #### 一、概览 本文档旨在全面解析 Android API Demo 中的各种案例,通过具体实例深入理解 Android 开发中的关键技术和应用实践。该文档覆盖了从简单的用户界面设计到复杂的后台...

    android API-DEMOS中文解析文档

    本文档是对Android官方提供的一系列API演示项目的深入分析,旨在帮助开发者更好地理解并掌握Android平台的各项功能和技术。 ### 一、概述 #### 1.1 Android API-DEMOS简介 Android API-DEMOS是Google为开发者提供...

    自定义万能dialog

    首先,创建自定义`Dialog`需要继承`android.app.Dialog`或`androidx.appcompat.app.AlertDialog.Builder`类。`Dialog`类提供了基本的对话框结构,而`AlertDialog.Builder`则允许我们更方便地构建对话框,通过链式...

    自定义dialog

    要自定义Dialog,我们需要继承`android.app.Dialog`类,并重写其`onCreate()`方法。在这个方法中,我们可以使用LayoutInflater来加载自定义的布局文件,然后设置到Dialog的视图中。以下是一个简单的自定义Dialog示例...

    禁止软键盘弹出,自定义键盘

    android:columnCount="3"&gt; android:text="1" android:onClick="onKeyClicked" /&gt; &lt;!-- 更多按钮... --&gt; &lt;/GridLayout&gt; ``` 每个按钮都可以绑定一个点击事件,处理输入逻辑。例如,`onKeyClicked`方法可以...

    自定义Dialog样式

    创建好布局后,我们需要创建一个自定义Dialog类,继承自`android.app.Dialog`。在自定义Dialog类中,重写`onCreate()`方法,加载之前创建的布局文件,例如`setContentView(R.layout.dialog_custom)`。如果需要对...

    透明与窗体的设置

    另外,如果仅需将Activity显示为默认的Dialog,可以简化配置,即只需设置`android:theme="@android:style/Theme.Dialog"`或调用`setTheme(android.R.style.Theme_Dialog)`。 ##### 其他创建Dialog的方法 - 使用`...

    Android--UI-新手必备源码master.zip

    包括Android布局,弹窗,配色,单击事件,UI,精美炫酷的activity切换动画和空间动画,是新手必备的源码,内含相关的Dome 25件。 - - 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ Android-UI-新手必备...

    Android 对话框的各种使用例子

    3. **Custom Dialog**:当系统提供的对话框样式不能满足需求时,可以自定义布局。通过设置`AlertDialog.Builder.setView()`加载自定义的视图,可以创建具有复杂结构的对话框。 ```java View dialogView = ...

    android 地址 日期选择器

    import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class ...

    CustomDialogexample.zip

    首先,自定义Dialog的基础是继承自`android.app.Dialog`类或`androidx.appcompat.app.AlertDialog.Builder`。在`CustomDialogexample.zip`中的`blogexample`项目中,开发者可能创建了一个自定义的Dialog类,如`...

    Android ApiDemo示例工程的创建

    1. **App**:这一部分主要涉及到Activity的使用,包括动画(Animation)、自定义对话框(Custom Dialog)、标题栏(Custom Title)、状态保存与恢复(Save & Restore State)等,以及如何处理Intent、启动快捷方式...

Global site tag (gtag.js) - Google Analytics