Using Theme in an Application

原创 2006年05月23日 16:51:00

Using Theme in an Application

This article can tell you how to write a enable skins application.
You can use theme in an Application after version in Series 60 Platform 2.0. the following content will tell you how to do these step by step.
Author Website: http://www.symbianer.com

Link against aknskins.lib and include files

Add the libray named aknskins.lib in SkinSample.mmp
 
Code:
LIBRARY aknskins.lib // link against aknskins.lib
Add two include files in SkinExampleContainer.h
 
Code:
#include <AknsDrawUtils.h>// add this inlcude file skin
#include <AknsBasicBackgroundControlContext.h> //add this inlcude file skin
 
Enabling skins in AppUi

Code:
/* In SkinExampleAppUi.cpp */
void CSkinExampleAppUi::ConstructL()
    {
    BaseConstructL( EAknEnableSkin );//Construct a enalbe skin
    .....
    }

new and delete a MAknsControlContext class in Container class

Add a MAknsControlContext class in container class

Code:
/* In skinExampleContainer.h */
class CSkinExampleContainer : public CCoeControl, MCoeControlObserver
{
 ....  
  private:
  MAknsControlContext* iBackGround; // for skins support 
}
 
/* In SkinExapleContainer.cpp */ 
void CSkinExampleContainer::ConstructL(const TRect& aRect)
    {
    CreateWindowL();
 
    iLabel = new (ELeave) CEikLabel;
    iLabel->SetContainerWindowL( *this );
    iLabel->SetTextL( _L("Skin Example") );
 
    SetRect(aRect);
    iBackGround = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, Rect(), EFalse );// new a background
    ActivateL();
    }
 
Delete iBackGroud

Code:
// Destructor
CSkinExampleContainer::~CSkinExampleContainer()
    {
   .....
 delete iBackGround;
    }
 

Draw the background bitmap using Skin library

Code:
/* In SkinExapleContainer.cpp */
void CSkinExampleContainer::Draw(const TRect& aRect) const
    {
    CWindowGc& gc = SystemGc();
 // draw background
 MAknsSkinInstance* skin = AknsUtils::SkinInstance();//new
 MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );//new
    AknsDrawUtils::Background( skin, cc, this, gc, aRect );//new
    }
 

MObjectProvider Chains

MObjectProvider interface can be used to make object instances available to child controls.
MopSupplyObject returns a pointer based on the given UID.
 
Code:
/* In SkinExapleContainer.cpp */
TTypeUid::Ptr CSkinExampleContainer::MopSupplyObject(TTypeUid aId)
    {
    if(aId.iUid == MAknsControlContext::ETypeId && iBackGround)
        {
        return MAknsControlContext::SupplyMopObject( aId, iBackGround);
        }
 
    return CCoeControl::MopSupplyObject( aId );
    }
Note: If you want to get the source code about this article ,plz contact me.

Application的Theme与Activity的Theme 摘要

1、Application当中的theme,当然会应用于所有的Window了,是的所有Activity,都会被Theme改变 2、Activity下的Theme,当然只会作用单个Activity W...
  • cadi2011
  • cadi2011
  • 2016年11月03日 16:24
  • 985

Android 主题 application theme

Android自带的主题样式,黑,白,风格
  • Android93
  • Android93
  • 2017年04月13日 14:56
  • 413

Android 中主题已经设置,但是在某些Activity 中无效

问题:Android 中主题已经设置,但是在某些Activity 中无效 解决:参考引用的博客,在listview 中listView.setAdapter(adapter); 中再次设置      ...
  • jingshuaizh
  • jingshuaizh
  • 2014年12月21日 14:22
  • 4462

Warning: unknown mime-type for "xxx" -- using "application/octet-stream"

python的第一条报错 Warning: unknown mime-type for "xxx" -- using "application/octet-stream" 这是因为在脚本文件开...
  • wynter_
  • wynter_
  • 2016年12月07日 21:11
  • 859

Before Android 4.1

Android开发中日志显示: 01-19 15:14:52.148 3118-3118/com.seehow.stmaker I/AppCompatViewInflater: app:theme ...
  • zhao_liwei
  • zhao_liwei
  • 2018年01月19日 15:16
  • 14

db2遇到的问题(更新中)

问题一:SQL1047N  The application is already connected to another database. db2 => create database ...
  • pianzif
  • pianzif
  • 2014年03月30日 00:38
  • 3139

总结一下Android中主题(Theme)的正确玩法

本文为转载,原文出处:http://www.cnblogs.com/zhouyou96/p/5323138.html 总结一下Android中主题(Theme)的正确玩法 ...
  • u011791526
  • u011791526
  • 2016年07月29日 16:11
  • 11451

Android应用主题动态切换

首先介绍两个实现的方式,这两种也是网上大多数博客写过的: 1. 在应用中配置多种主题,让用户可以选择在不同的场景下切换不同的主题,最常用的就是白天和黑夜两种主题的切换。这种方式的缺点...
  • xingxing_yan
  • xingxing_yan
  • 2016年02月17日 17:34
  • 770

网站开发中Microsoft.Security.Application的使用

网站开发中程序员要特别处理安全事件,网站安全过滤程序是每个程序员的基本知识,如果你给客户做的网站有漏洞不安全会导致客户资料泄露,重者会造成经济损失。网站漏洞介绍之:xxs脚本跨站漏洞关于微软安全组件M...
  • qq380107165
  • qq380107165
  • 2016年05月31日 12:38
  • 1032

解决Android Studio默认AppTheme主题找不到的问题 The following classes could not be found: - android.support.v

解决方法1: 打开build.gradle (Module:app) 在dependencies中找到compile 'com.android.support:appcompat-v7:...
  • ashuai2010
  • ashuai2010
  • 2016年02月24日 10:46
  • 3671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Using Theme in an Application
举报原因:
原因补充:

(最多只允许输入30个字)