Login
Signup as a Tutor

As a tutor you can connect with more than a million students and grow your network.

Android : Support multiple themes in an android application

Gaurav Bansal
11/01/2017 0 0

If you are developing a theme based application to enhance user experience, then following steps needs to follow.

We are taking example of an android application having 2 themes white and black.

Step 1:
Define 2 themes in your application's styles.xml file

<style name="SampleAppBlackTheme">
    <item name="ic_action_accept">@drawable/ic_action_accept</item>
    <item name="ic_action_cancel">@drawable/ic_action_cancel</item>
    <item name="ic_action_delete">@drawable/ic_action_delete</item>
</style>
<style name="SampleAppWhiteTheme">
    <item name="ic_action_accept">@drawable/ic_action_accept_white</item>
    <item name="ic_action_cancel">@drawable/ic_action_cancel_white</item>
    <item name="ic_action_delete">@drawable/ic_action_delete_white</item>
</style>
Step 2:
Define a default theme for MainActuvity in android manifest:
<activity    
    android:name=".MainActivity"    
    android:screenOrientation="portrait"    
    android:theme="@style/SampleAppBlackTheme"
    android:windowSoftInputMode="stateHidden|adjustNothing" >
.........
</activity>
 
Step 3:
Based on User choice of theme, set theme programmatically in onCreate() method of respective activity:
@Overrideprotected void onCreate(Bundle savedInstanceState) {
    overridePendingTransition(0, 0);
    if (Constants.GO_WHITE)
        setTheme(R.style.SampleAppWhiteTheme);
    else
       setTheme(R.style.SampleAppBlackTheme);
    ........
}
P.s.
In case of multiple activities, define 2 themes for each activity
 
Step 4:
Define the common items in the attrs.xml as below :
<attr name="ic_action_accept" format="reference" />
<attr name="ic_action_cancel" format="reference" />
<attr name="ic_action_delete" format="reference" />
 
Step 5:
Use the defined attributes in the layout xml file or use programmatically in any view as per below example.
Layout example :
<ImageView    
    android:id="@+id/accept_icon"    
    android:layout_width="@dimen/abc_action_button_min_width"    
    android:layout_height="@dimen/abc_action_bar_default_height_material"
    android:src="?attr/ic_action_accept"    
    android:visibility="visible" />
 
Fragment or View example :
int[] attrs = new int[]{R.attr.ic_action_accept};
TypedArray typedArray = getActivity().obtainStyledAttributes(attrs);
Drawable ic_action_accept = typedArray.getDrawable(0);
 
These attribute will be resolved in styles.xml file and return the drawable or color as per the current theme of the activity. 
 
That's how multiple themes can be supported. In case of any questions please comment.
0 Dislike
Follow 0

Please Enter a comment

Submit

Other Lessons for You

Java Interview Questions & Answers
Java Interview Questions have been designed especially to get you acquainted with the nature of questions you may encounter during your interview for the subject of Java Programming Language. As per my...

Dev Group | 07 Feb

2 0
0
What Is Java? Explain The History Of Java
i. Ovierview: Java programming language was originally developed by Sun Microsystems which was initiated by James Gosling and released in 1995 as core component of Sun Microsystems' Java platform (Java...

Dev Group | 07 Feb

1 0
0
Thread Class In JAVA
Thread Class: Thread class is the main class on which Java's Multithreading system is based. Thread class, along with its companion interface Runnable will be used to create and run threads for utilizing...

SR-IT ACADEMY | 05 Feb

0 0
0
Understanding Object Serialization In Java
Simple walkthrough: What is Serialization? Converting an object to bytes and bytes back to object (Deserialization): When is serialization used? When we want to Persist the Object. When we want...

Vedant K. | 02 Feb

0 0
0
Crux Of The Basic Interview Question Asked Around It Professionals
Question: Explain PSVM() [Public Static Void Main()] in Java. Answer: This question is asked from a differnet persctive. Person asking this question is looking for deep java concepts. If answer in your...

Looking for Android Application Development Training ?

Find best Android Application Development Training in your locality on UrbanPro.

Do you offer Android Application Development Training ?

Create Free Profile »
Sponsored

Find Best Android Application Development Training ?

Find Now »