【Android】8.1 主题基本用法

分类:C#、Android、VS2015;

创建日期:2016-02-17

一、创建本章示例主界面

1、界面截图

2、MainActivity.cs文件中对应的代码

在CreateChItems()方法中添加下面的代码:

    chItems.Add(new Chapter()
    {
        ChapterName = "第8章 样式和主题",
        ChapterItems = new ChItem[]
        {
            new ChItem { type = typeof(ch0801ThemeDemo1),
                Title = "例8-1 主题基本用法",
                Desc = "演示如何设置应用程序级别的主题和仅本页使用的主题" },
            new ChItem { type = typeof(ch0802ThemeDemo2),
                Title = "例8-2 动态选择和设置主题",
                Desc = "演示如何动态选择和设置仅当前界面使用的主题" },
            new ChItem { type = typeof(ch0803ThemeDemo3),
                Title = "例8-3 自定义主题",
                Desc = "演示如何自定义主题及其样式让其更符合你的想法" },
            new ChItem { type = typeof(ch0804ThemeDemo4),
                Title = "例8-4 让主题自适应不同的Android版本",
                Desc = "演示如何让不同的Android系统自动使用相应的主题" },
        }
    });

二、主题基本用法

1、查看主题

在.axml文件的【设计界面】中,可直接观察某种主题应用的效果。办法如下:在对应的设计界面中,单击【Theme】à【More Themes】,此时就会弹出下图所示的所有主题:

选择某种主题,单机【OK】按钮,它就会将所选主题应用到当前的设计界面中。

注意:这种方式仅仅是为了观察采用哪种主题比较合适。确定了合适的主题后,还需要在清单文件或者活动文件中指定所选的主题,此时它才会真正起作用。

2、指定主题

有两种指定主题(包括内置的主题和自定义主题)的方式。

(1)在清单文件中指定所有页面默认使用的主题

以下两种形式可任选其一,但不要两种形式都去指定。

第一种方式是在properties文件夹下的AndroidManifest.xml文件中配置“应用程序级别”的主题,应用程序级别的主题对所有页面都有效。例如:

<application android:label="MyApp"

android:theme="@android:style/Theme.DeviceDefault.Light">

</application>

第二种方式是在properties文件夹下的AssemblyInfo.cs文件中配置应用程序级别的主题,应用程序级别的主题对所有页面都有效。例如:

[assembly:Application(Theme = "@android:style/Theme.DeviceDefault.Light")]

(2)在Activity中指定本页使用的主题

除了指定应用程序级别的主题外,还可以在某个活动中(.cs文件中)指定仅适用于当前活动页面的主题,用这种方式指定的主题仅对该活动有效,其他Activity仍会使用默认的主题。例如:

[Activity(Theme = "@android:style/Theme. DeviceDefault.Light.DarkActionBar",

Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]

三、材料主题(Material Theme)

材料(Material)也叫材质,学过3D开发的对Material这个概念肯定不陌生,不管中文怎么翻译它,记住就是这个英文单词就OK了。

Material Theme是从Android 5.0(API 21)开始提供的内置主题,常用有:

  • Theme.Material – 黑色材质背景,这是Android 5.0默认的主题。
  • Theme.Material.Light –浅色材质背景。
  • Theme.Material.Light.DarkActionBar – 浅色材质背景,但活动条(ActionBar)是黑色的材质背景。

由于可以将材质设置为各种类型的图形或图像,因此这种主题可提供非常大的灵活性。

使用Material Theme的要求

(1)必须安装Android 5.0 (API 21)或更高版本的Android SDK。

(2)需要使用Java JDK 1.7或更高版本的JDK编译Android应用程序。

(3)Xamarin.Android版本不能低于4.2。

由于前面章节介绍的安装开发环境已经满足了这些要求,所以可直接使用材质主题。

注:Xamarin for VS 4.0.1717对应的Xamarin.Android版本为6.0.0.35,可在VS2015中通过【帮助】查看你当前安装的Xamarin.Android版本。

下面的代码演示了如何在应用程序级别使用材质主题(对所有Activity都有效):

<application android:label="MyApp"

android:theme="@android:style/Theme.Material.Light">

</application>

也可以在AssemblyInfo.cs文件中配置它。例如:

[assembly: Application(Theme="@android:style/Theme.Material.Light")]

下面的代码演示了如何在Activity中使用材质主题(仅对该Activity有效):

[Activity(Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon",

Theme = "@android:style/Theme.Material.Light")]

public class MainActivity : Activity

{

……

}

四、示例-ch0801ThemeDemo

该示例仅为了观察分别指定应用程序级别的主题和仅适用于某个活动主题的效果。

1、运行截图

 

2、代码分析

从运行截图中可以看出,由于左图没有在ch0801ThemeDemo1.cs文件中指定Theme,因此它使用的主题是清单文件(AndroidManifest.xml)中定义的主题,以这种方式指定的Theme适用于所有页面。

清单文件(AndroidManifest.xml)中的相关代码如下:

<application android:label="MyDemos"
     android:theme="@android:style/Theme.DeviceDefault.Light.DarkActionBar">
……
</application>

ch0801ThemeDemo1.cs文件的代码如下:

using Android.App;
using Android.OS;
using Android.Widget;
namespace MyDemos.SrcDemos
{
    [Activity(Label = "【例8-1】主题基本用法")]
    public class ch0801ThemeDemo1 : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ch0801_ThemeDemo1);
            FindViewById<Button>(Resource.Id.btn1).Click += delegate
            {
                StartActivity(typeof(ch0801ThemeDemo2));
            };
        }
    }
}

对于运行截图中的右图来说,由于在ch0801ThemeDemo2.cs文件中指定了Theme,因此这个页面使用的主题就是这个Theme,而不是清单文件中指定的主题,但该Theme仅适用于这个页面。

ch0801ThemeDemo2.cs文件的代码如下:

using Android.App;
using Android.OS;
using Android.Widget;
namespace MyDemos.SrcDemos
{
    [Activity(Label = "【例8-1】主题基本用法",
        Theme = "@android:style/Theme.DeviceDefault")]
    public class ch0801ThemeDemo2 : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.ch0801_ThemeDemo2);
            FindViewById<Button>(Resource.Id.btn1).Click += delegate {
                StartActivity(typeof(ch0801ThemeDemo1));
            };
        }
    }
}
时间: 2024-12-17 20:45:03

【Android】8.1 主题基本用法的相关文章

Android Studio下SVN的用法(1) - 初识SVN

Android Studio下SVN的用法(1) - 初识SVN 前言 这几天公司又来了新人,之前都是一个人开发的项目现在需要合作开发.所以不可避免的需要使用版本控制工具. 公司使用的是SVN,网上有一大堆教程,但是发现对于新手来说,特别是从来没有接触过的人来说,往往都 说的不是很详细,甚至可以说基本没有照顾到这些方面.不要问我为什么这么清楚,因为被坑的不行了--.. PS:本篇文章是介绍AS下SVN的使用,所以可能会跟网上的教程不同 使用 下载及安装 首先前往官网下载SVN客户端,官网上下载可

android中Handle类的用法

android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响. 当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被强制关闭,

Android Studio显示主题/样式设置

估计很多刚开始用Android Studio的DEV,都有经常看到网上关于Android Studio的贴图是灰色样式的,但是为啥自己刚安装的就是白色样式的呢. 这个其实只要改下显示主题就可以了. 如下图,选择Darcula就可以了,IntelliJ是默认风格,Windows这个风格其实颜色和IntelliJ是差不多的: Android Studio显示主题/样式设置,布布扣,bubuko.com

Android数据格式解析对象JSON用法

1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java.比XML更轻量级,Json使用起来比较轻便和简单.JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便. 2.环境配置 http://code.google.com/p/googl

三、android中Handle类的用法

当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉.Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响. 当用户点击一个按钮时如果执行的是一个常耗时操作的话,处理不好会导致系统假死,用户体验很差,而Android则更进一步,如果任意一个Acitivity没有响应5秒钟以上就会被强制关闭,因此我们需要另外起动一个线程来处理长耗

(转载)Android常用的Dialog对话框用法

Android常用的Dialog对话框用法 Android的版本有很多通常开发的时候对话框大多数使用自定义或是 Google提供的V4, V7 兼容包来开发保持各个版本的对话框样式统一,所以这里使用的是V7 包里的AlertDialog. 1 import android.app.ProgressDialog; 2 import android.content.DialogInterface; 3 import android.os.Bundle; 4 import android.os.Sys

Android Studio如何提示函数用法

Eclipse有一个很好的功能,就是当你代码调用某个android API时,鼠标移到对应的函数或者方法上,就会自动有一个悬 浮窗提示该函数的说明(所包含的参数含义,该方法功能).迁移到Android Studio后,这个鼠标移到函数上,你发现 悬浮窗不出来了,各种不习惯啊.那在Android Studio到底如何查看函数的说明呢.选中你要查看的函数,比如我要查 看底下函数使用说明,先选中,然后按F2,嘎嘎,悬浮窗就出来了,真尼玛不方便啊,刚开始用的时候非常的不习惯,感觉蛋都要碎了. this.

android点滴之HandlerThread的用法

bochs调试的有些命令根据版本好像有变化,我在ubuntu下安装了bochs-2.4.6,发现和bochs-2.3.6命令出现区别,在2.3.6版本支持dump_cpu.info r等命令,在我安装的2.4.6版本中不支持这两个命令,后面在使用bochs的过程中会陆续总结一些2.4.6支持的命令,最简单的方法是通过help来获取,下面先记录一些常用的: r 查看通用寄存器 sreg 查看段寄存器(IDTR被归到这里) creg 查看系统寄存器(CR0等) x 查看内存(线性地址) xp 查看内

Android开发:SurfaceView基本用法总结

本文主要讲解如何使用SurfaceView,旨在帮助大家快速上手SurfaceView开发.由于上篇文章<Android开发:SurfaceView基本用法总结及开发问题分享> 排版不佳,所以另起一篇单独介绍SurfaceView的基本用法总结. 转载请注明作者xiong_it和链接:http://blog.csdn.net/xiong_it/article/details/45966309,谢谢! SurfaceView基本介绍 1.系统给SurfaceView提供了一个专门绘图的Surfa