热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android学习笔记styletheme浅尝

在应用程序开发中,其中最重要的就是用户界面的设计,一个好的应用必然有一个好的用户体验,在AndroidOS中Style风格的设计是提高用户

   在应用程序开发中,其中最重要的就是用户界面的设计,一个好的应用必然有一个好的用户体验,在Android OS中Style风格的设计是提高用户体验的关键技术之一。在Android中有两种方式的风格Style和Theme

   1. 什么是Style?

   Style:是为View和window定义其视觉与风格的属性集合。它遵循的是与Web设计中层叠样式设计非常相似的设计理念--将内容与风格分开,如我们设计一个button,我们可以将button这个控件我们将其功能与它的视觉效果分开设计。所以在定义Style文件时要与layout中.xml文件分开。一般我们保存在/res/values文件下。

   2. 什么是Theme?

   Theme:它是一种适用于整个Activity或者Application的Sytle,也就是说Android所提供的两种Style,style是应用在控件之上,而theme是应用在整个窗体之上。

  Style的实现:我们以自定义一个对话框为例(在API Demo里有很多很好的例子)效果如图:

  

  首先我们要设计一个呈现给用户的对话框的风格,这里通过xml画一个简单的图形,在/res/drawble下建一个bg.xml文件:

 



 

   这是一个简单的画图效果,通过它我们可以设计我们的窗口风格,从SDK文档中我们可以看到它所有的属性:

 

  在定义这个xml文件的时候需要注意一点就是shape必须为跟节点,它主要属性为android:shape,用来定义填充view的图形形状:

             "rectangle" :矩形

         "oval"           :椭圆

         "line"            :水平线

         "ring"            :环形

  用来定义渐变颜色

  android:angle: 用来定义颜色渐变的角度,为integer类型,0表示从左到右,90表示从下到上,该值必须为45的倍数;

  android:centerX:为渐变色中心相对X抽的位置范围从0到1.0,如果android:type="linear"时,该属性不可用;

  android:centerY:为渐变色中心相对Y抽的位置范围从0到1.0,如果android:type="linear"时,该属性不可用;

  android:centerColor:为可选值,中间色用来分开开始与结束色.

  定义填充色

  定义边色以及边的形式为虚线还是实线以及粗细

  当shape为矩形时定义其四角为圆形角

 



 

以上简单介绍了下shape的应用,在定义完装载我们的view的窗口后我们定义其风格,在/res/values下建立一个styles.xml文件,如下:

 

其中resources为根节点,第一个定义了其应用程序的风格,也就是activity的风格,而这里我们继续了android中Dialog的风格, name属性为我们定义的风格名称,parent的值为继承的风格的位置;

下有个item元素,如第二个风格Text,这个是我们建立的用来实现TextView的风格,该下的元素item就是TextView的属性,每个item对应一个属性;

style样式的使用:

layout布局文件下建立一个.xml文件:

style="@style/Text"就实现了其风格的引用;

最后建立我们的Activity:

最后需要在AndroidManifet.xml文件下加入风格:

      android:theme="@style/Theme.CustomDialog">

 



 

至此,大概效果已经实现了,许多详细的设计参考SDK文档。

 

 

-----------------------------------------------------------------------------------------水平有限,错误之处还望指教,谢谢~~


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 在开发app时,使用了butterknife后,在androidStudio打包apk时可能会遇到报错。为了解决这个问题,可以通过打开proguard-rules.pro文件进行代码混淆来解决。本文介绍了具体的混淆代码和方法。 ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
author-avatar
黄宗翰琼琦莉雯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有