Android:UI控件风格与主题、selector、Theme

简介:

注:默认设置放在最后。


1.颜色xml:values-->resources-->color.xml

1
2
3
4
5
6
<?xml version= "1.0"  encoding= "utf-8" ?>
<resources>
     <color name= "yellow" >#FFFF00</color>
     <color name= "zise" >#D15FEE</color>
     <color name= "lightblue" >#8DB6CD</color>
</resources>


2.颜色selector:Color List-->selector-->/color/xxx.xml

1
2
3
4
5
6
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android" >
     <item android:state_pressed= "true"
         android:color= "@color/yellow" />
     <item android:color= "@color/zise" />
</selector>


3.尺寸(文件大小、控件大小等)dimens:values-->dimens.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<resources>
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name= "activity_horizontal_margin" >16dp</dimen>
     <dimen name= "activity_vertical_margin" >16dp</dimen>
     <dimen name= "btn_head_width" >100dp</dimen>
     <dimen name= "btn_head_high" >100dp</dimen>
     <dimen name= "edit_width" >200dp</dimen>
     <dimen name= "edit_high" >60dp</dimen>
     <dimen name= "edit_width_xhdpi" >60dp</dimen>
     <dimen name= "edit_high_xhdpi" >160dp</dimen>
     <dimen name= "textsize" >20dp</dimen>
                         
     <dimen name= "EditText_layout_marginTop" >80dp</dimen>
     <dimen name= "textView_layout_marginTop" >26dp</dimen>
</resources>


4.背景图片:Drawable-->selector-->/drawable/xxx.xml

1
2
3
4
5
6
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android"  >
     <item android:state_pressed= "true"
         android:drawable= "@drawable/ic_pressed" ></item>
     <item android:drawable= "@drawable/ic_default" ></item>
</selector>



5.主题相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
常用的系统主题:
1 . 没有标题:
    @android :style/Theme.Black.NoTitleBar
2 . 全屏幕
    @android :style/Theme.Black.NoTitleBar.Fullscreen
3 . 透明
    @android :style/Theme.Translucent
4 . 桌面壁纸作为背景
    @android :style/Theme.Wallpaper
5 . 对话框
    @android :style/Theme.Dialog 
    对Activity的生命周期是否有影响?
练习:第一个Activity中有两个按钮,
       一个弹出对话框主题的Activity,
       另一个弹出对话框,测试二者对
       第一个Activity生命周期是否有影响。     
       
弹出对话框主题的Activity:
       暂停状态,onPause() 
弹出对话框
     生命周期没有影响
       
使用场景:
1 . 对话框主题的Activity
    例如:在桌面弹出短信内容对话框
    对话框后面的Activity是其他App的,这时必须使用对话框主题的
    Activity
2 . 对话框   
    需要使用Activity中的成员变量时


6.设置一按钮点击时图片和文字颜色都有高亮效果

1
2
3
4
5
6
7
8
9
10
11
12
13
         <TextView
             android:id= "@+id/home_tv_city"
             android:layout_width= "wrap_content"
             android:layout_height= "wrap_content"
             android:layout_alignParentLeft= "true"
             android:layout_centerVertical= "true"
             android:drawableLeft= "@drawable/selector_home_citymore"
             android:drawablePadding= "4dp"
             android:gravity= "center"
             android:paddingRight= "12dp"
             android:text= "厦门"
             android:textColor= "@color/selector_home_city"
             android:textSize= "20sp"  />


res/drawable/selector_home_citymore.xml代码:

1
2
3
4
5
6
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android"  >
     <item android:state_pressed= "true"
         android:drawable= "@drawable/home_morecity_pre" ></item>
<item android:drawable= "@drawable/home_morecity_nor" ></item>
</selector>


res/color/selector_home_city.xml代码:

1
2
3
4
5
6
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android" >
     <item android:state_pressed= "true"
         android:color= "@color/cyan" />
     <item android:color= "@color/white" />
</selector>



7.创建一个shape的selector

1
2
3
4
5
6
7
8
9
10
11
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android" >
 
     <item android:state_pressed= "true" ><shape>
             <solid android:color= "@color/gray_text"  />
         </shape></item>
     <item><shape>
             <solid android:color= "@color/touming"  />
         </shape></item>
 
</selector>



8.代码编写selector

范例:

布局xml代码:

1
2
3
4
5
6
7
8
<TextView
         android:id= "@+id/TextView_title"
         android:layout_width= "wrap_content"
         android:layout_height= "wrap_content"
         android:focusable= "true"
         android:drawableTop= "@drawable/selector_tabwidget_icon"
         android:textAlignment= "center"
         />


selector的xml代码:

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version= "1.0"  encoding= "utf-8" ?>
<selector xmlns:android= "http://schemas.android.com/apk/res/android"  >
     <!-- Non focused states -->
     <item android:state_focused= "false"  android:state_selected= "false"  android:state_pressed= "false"  android:drawable= "@drawable/contact"  />
     <item android:state_focused= "false"  android:state_selected= "true"  android:state_pressed= "false"  android:drawable= "@drawable/contact_sel"  />
     <!-- Focused states -->
     <item android:state_focused= "true"  android:state_selected= "false"  android:state_pressed= "false"  android:drawable= "@drawable/contact_sel"  />
     <item android:state_focused= "true"  android:state_selected= "true"  android:state_pressed= "false"  android:drawable= "@drawable/contact_sel"  />
     <!-- Pressed -->
     <item android:state_selected= "true"  android:state_pressed= "true"  android:drawable= "@drawable/contact_sel"  />
     <item android:state_pressed= "true"  android:drawable= "@drawable/contact_sel"  />
</selector>


selector的java代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
StateListDrawable drawable =  new  StateListDrawable();
         //Non focused states
         drawable.addState( new  int []{-android.R.attr.state_focused, -android.R.attr.state_selected, -android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact));
         drawable.addState( new  int []{-android.R.attr.state_focused, android.R.attr.state_selected, -android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact_sel));
         //Focused states
         drawable.addState( new  int []{android.R.attr.state_focused,-android.R.attr.state_selected, -android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact_sel));
         drawable.addState( new  int []{android.R.attr.state_focused,android.R.attr.state_selected, -android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact_sel));
         //Pressed
         drawable.addState( new  int []{android.R.attr.state_selected, android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact_sel));
         drawable.addState( new  int []{android.R.attr.state_pressed},
                 getResources().getDrawable(R.drawable.contact_sel));
           
         TextView textView = (TextView) findViewById(R.id.TextView_title);
                  
         textView.setCompoundDrawablesWithIntrinsicBounds( null , drawable,  null null );




本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1208480,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
存储 消息中间件 人工智能
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
【04】AI辅助编程完整的安卓二次商业实战-寻找修改替换新UI首页图标-菜单图标-消息列表图标-优雅草伊凡
371 4
|
9月前
|
XML Android开发 数据格式
Android利用selector(选择器)实现图片动态点击效果
本文介绍了Android中ImageView的`src`与`background`属性的区别及应用,重点讲解如何通过设置背景选择器实现图片点击动态效果。`src`用于显示原图大小,不拉伸;`background`可随组件尺寸拉伸。通过创建`selector_setting.xml`,结合`setting_press.xml`和`setting_normal.xml`定义按下和正常状态的背景样式,提升用户体验。示例代码展示了具体实现步骤,包括XML配置和形状定义。
447 3
Android利用selector(选择器)实现图片动态点击效果
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
9月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
602 2
|
9月前
|
Android开发
Android控件样式的抽取(小提及快捷方式)
在Android开发中,若多个控件样式重复,可抽取公共部分以简化代码。例如对EditText提取样式,通过编辑`styles.xml`实现复用。为提高效率,Android Studio提供自动提取Style功能:右键点击控件样式选项,选择“Style...”,勾选需要提取的属性后确认,即可快速生成样式代码,显著提升开发便利性。
283 2
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
13046 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
前端开发 Linux C#
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
一款开源、免费、美观的 Avalonia UI 原生控件库 - Semi Avalonia
1376 10
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
人工智能 API Apache
推荐3款开源、美观且免费的WinForm UI控件库
推荐3款开源、美观且免费的WinForm UI控件库
2804 6
|
XML 前端开发 Android开发
Android:UI:Drawable:View/ImageView与Drawable
通过本文的介绍,我们详细探讨了Android中Drawable、View和ImageView的使用方法及其相互关系。Drawable作为图像和图形的抽象表示,提供了丰富的子类和自定义能力,使得开发者能够灵活地实现各种UI效果。View和ImageView则通过使用Drawable实现了各种图像和图形的显示需求。希望本文能为您在Android开发中使用Drawable提供有价值的参考和指导。
402 2

热门文章

最新文章