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 Jan 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

Comparable vs Comparator
java.lang.Comparable java.util.Comparator For comparing some other object with its own object. Ex. I am comparing myself to some other employee. Method signature is: int compareTo (T object). For implementing...

Vivek Ranjan Sahu | 2 days ago

0 0
0
ClassNotFoundException vs NoClassDefFoundError
ClassNotFoundException NoClassDefFoundError It is an exception and happens due to programmer’s mistake and can be recovered by updating the code. Thrown when an application tries to load a class...

Vivek Ranjan Sahu | 2 days ago

0 0
0
Java: A Quick Overview
Not purely Object Oriented: It doesn't support multiple inheritence, it supports primitive data types and static members. Doesn’t support multiple inheritance: Reason is diamond problem i.e., if...

Vivek Ranjan Sahu | 2 days ago

1 0
0
Features Of Java
There is given many features of Java. They are also known as java buzzwords. The Java Features given below are simple and easy to understand. Simple. Object-Oriented. Portable. Platform independent. Secured. Robust. Architecture...
V

Venkatakrishna | 18 Oct

0 0
0
JAVA Version History
Java Version History: There are many java versions that has been released. Current stable release of Java is Java SE 8. JDK Alpha and Beta (1995). JDK 1.0 (23rd Jan, 1996). JDK 1.1 (19th Feb, 1997). J2SE...
V

Venkatakrishna | 18 Oct

0 0
0

Find Android Application Development Training near you

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 »