- 浏览: 42694 次
- 性别:
- 来自: 济南
最新评论
-
kensunhu:
正是我想要的。典型的app ui布局。谢谢!
android UI - 仿威信tab样式 -
007007jing:
bing_zz 写道兄弟加油!谢谢
android2.3 api demo 学习系列(7)--App/Activity/Hello World -
bing_zz:
兄弟加油!
android2.3 api demo 学习系列(7)--App/Activity/Hello World
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中得说明。谢谢
发表评论
-
android2.3 api demo 学习系列(23)--App/Notification/StatusBarNotification
2012-07-07 19:51 1382apidemo-StatusBarNotification里面 ... -
android2.3 api demo 学习系列(22)--App/Notification/Notifying Service Controller
2012-07-06 14:56 1718因为还没有看到service的demo,这里先不对servic ... -
android2.3 api demo 学习系列(21)--App/Notification/Incoming Message
2012-07-06 11:55 2505现在我们开始学习android的Status Bar Noti ... -
android2.3 api demo 学习系列(20)--App/Menu
2012-07-06 09:58 1155现在来学习下menu的相关 ... -
android2.3 api demo 学习系列(19)--App/Intent and Launcher Shortcuts
2012-07-06 09:36 1098第一个demo:Intent,根据指定的类型,枚举出所有符合条 ... -
android2.3 api demo 学习系列(18)--App/Dialog
2012-07-06 09:13 1012今天主要学习Dialog: 1、一般的dialog ... -
android2.3 api demo 学习系列(17)--App/Alarm/AlarmController and Alarm Service
2012-07-03 17:12 2191本次学习将apidemo中得两个demo:AlarmContr ... -
android2.3 api demo 学习系列(16)--App/Activity/Translucent and Blur activity
2012-07-03 11:47 1907本次同样是将apidemo中得两个demo合并起来学习:Tra ... -
android2.3 api demo 学习系列(15)--App/Activity/SetWallpaper
2012-07-03 11:00 1131本次示例我们整合了apidemo里面的两个demo:SetWa ... -
android2.3 api demo 学习系列(14)--App/Activity/Screen Orientation
2012-07-03 09:50 3127下面我们来学习下Screen Orientaiton的demo ... -
android2.3 api demo 学习系列(13)--App/Activity/Save & Restore
2012-07-02 17:29 1490前面文章android2.3 api demo 学习系 ... -
android2.3 api demo 学习系列(12)--App/Activity/Reorder Activitys
2012-07-02 16:45 999Reorder Activitys Demo主要是实现打开ac ... -
android2.3 api demo 学习系列(11)--App/Activity/Redirection
2012-07-02 15:52 868APIDEMO里面的redirection示例本身并没有新技术 ... -
android2.3 api demo 学习系列(10)--App/Activity/RecevieResult
2012-07-02 14:48 1001在先前的文章 activity之间跳转传值 已经学习过这方面的 ... -
android2.3 api demo 学习系列(9)--App/Activity/QuickContactsDemo
2012-07-01 19:46 1000现在我们来学习如何使用Content Provider来访问a ... -
android2.3 api demo 学习系列(8)--App/Activity/Preference State
2012-07-01 19:45 912android保存数据有很多种方式,其中最简单的就是使用Sha ... -
android2.3 api demo 学习系列(7)--App/Activity/Hello World
2012-06-29 14:03 1106学习android当然不能少了HelloWorld,接下来我们 ... -
android2.3 api demo 学习系列(6)--App/Activity/ForwardActivity
2012-06-29 13:50 837本次学习activity的跳转 1、构建intent ... -
android2.3 api demo 学习系列(5)--App/Activity/Dialog
2012-06-29 11:42 1007前面我们已经学习了Custom Dialog 和 Custom ... -
android2.3 api demo 学习系列(4)--App/Activity/Custom Title
2012-06-29 11:26 1112android的标题栏默认是由android:lable定义的 ...
相关推荐
### Android API Demo详解 #### 一、概述 本篇文章旨在为初学者提供一套全面而深入的Android API Demo解析,帮助大家更好地理解Android开发中的各种基础知识和技术细节。文章将按照给出的目录顺序,逐一分析每个...
本项目“Android多种android控件的Demo”是一个毕业设计学习资源,旨在帮助开发者熟悉并掌握Android控件的应用。下面将对这个项目中的主要知识点进行详细讲解。 1. **布局管理器(Layouts)**: - **线性布局...
本文档是关于基于Android 2.3版本的API Demo解析,旨在帮助开发者更好地理解Android应用开发中的各种控件和技术点。通过一系列实例,详细介绍了如何使用Android SDK中的各个功能模块。 #### 二、主要内容概述 文档...
### Android API Demo 知识点概述 #### 一、概览 本文档旨在全面解析 Android API Demo 中的各种案例,通过具体实例深入理解 Android 开发中的关键技术和应用实践。该文档覆盖了从简单的用户界面设计到复杂的后台...
本文档是对Android官方提供的一系列API演示项目的深入分析,旨在帮助开发者更好地理解并掌握Android平台的各项功能和技术。 ### 一、概述 #### 1.1 Android API-DEMOS简介 Android API-DEMOS是Google为开发者提供...
首先,创建自定义`Dialog`需要继承`android.app.Dialog`或`androidx.appcompat.app.AlertDialog.Builder`类。`Dialog`类提供了基本的对话框结构,而`AlertDialog.Builder`则允许我们更方便地构建对话框,通过链式...
要自定义Dialog,我们需要继承`android.app.Dialog`类,并重写其`onCreate()`方法。在这个方法中,我们可以使用LayoutInflater来加载自定义的布局文件,然后设置到Dialog的视图中。以下是一个简单的自定义Dialog示例...
android:columnCount="3"> android:text="1" android:onClick="onKeyClicked" /> <!-- 更多按钮... --> </GridLayout> ``` 每个按钮都可以绑定一个点击事件,处理输入逻辑。例如,`onKeyClicked`方法可以...
创建好布局后,我们需要创建一个自定义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,精美炫酷的activity切换动画和空间动画,是新手必备的源码,内含相关的Dome 25件。 - - 文件夹 PATH 列表 卷序列号为 4E8D-6931 C:. │ .txt │ Android-UI-新手必备...
3. **Custom Dialog**:当系统提供的对话框样式不能满足需求时,可以自定义布局。通过设置`AlertDialog.Builder.setView()`加载自定义的视图,可以创建具有复杂结构的对话框。 ```java View dialogView = ...
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 ...
首先,自定义Dialog的基础是继承自`android.app.Dialog`类或`androidx.appcompat.app.AlertDialog.Builder`。在`CustomDialogexample.zip`中的`blogexample`项目中,开发者可能创建了一个自定义的Dialog类,如`...
1. **App**:这一部分主要涉及到Activity的使用,包括动画(Animation)、自定义对话框(Custom Dialog)、标题栏(Custom Title)、状态保存与恢复(Save & Restore State)等,以及如何处理Intent、启动快捷方式...