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,如需转载请自行联系原作者
目录
相关文章
|
8天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
9天前
|
人工智能 API Apache
推荐3款开源、美观且免费的WinForm UI控件库
推荐3款开源、美观且免费的WinForm UI控件库
|
9天前
|
API C# 开发者
基于Material Design风格开源、免费的WinForms UI控件库
基于Material Design风格开源、免费的WinForms UI控件库!
|
1月前
|
Linux C# Android开发
分享3款开源、免费的Avalonia UI控件库
分享3款开源、免费的Avalonia UI控件库
134 0
|
2月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
随着移动应用市场的蓬勃发展,用户对界面设计的要求日益提高。为此,掌握由Google推出的Material Design设计语言成为提升应用颜值和用户体验的关键。本文将带你深入了解Material Design的核心原则,如真实感、统一性和创新性,并通过丰富的组件库及示例代码,助你轻松打造美观且一致的应用界面。无论是色彩搭配还是动画效果,Material Design都能为你的Android应用增添无限魅力。
65 1
|
1月前
|
XML 存储 Java
浅谈Android的TextView控件
浅谈Android的TextView控件
31 0
|
2月前
|
XML 编解码 Android开发
安卓开发中的自定义视图控件
【9月更文挑战第14天】在安卓开发中,自定义视图控件是一种高级技巧,它可以让开发者根据项目需求创建出独特的用户界面元素。本文将通过一个简单示例,引导你了解如何在安卓项目中实现自定义视图控件,包括创建自定义控件类、处理绘制逻辑以及响应用户交互。无论你是初学者还是有经验的开发者,这篇文章都会为你提供有价值的见解和技巧。
46 3
|
3月前
|
存储 搜索推荐 Java
探索安卓开发中的自定义视图:打造个性化UI组件Java中的异常处理:从基础到高级
【8月更文挑战第29天】在安卓应用的海洋中,一个独特的用户界面(UI)能让应用脱颖而出。自定义视图是实现这一目标的强大工具。本文将通过一个简单的自定义计数器视图示例,展示如何从零开始创建一个具有独特风格和功能的安卓UI组件,并讨论在此过程中涉及的设计原则、性能优化和兼容性问题。准备好让你的应用与众不同了吗?让我们开始吧!
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
58 1
|
3月前
|
API Android开发
Android项目架构设计问题之选择和使用合适的UI库如何解决
Android项目架构设计问题之选择和使用合适的UI库如何解决
48 0
下一篇
无影云桌面