Hello Everyone , Today we are going in depth of the Material of Material Design. We will look for the answers of, What exactly the material is, what are the properties of the material, how it can play a crucial role to give a an attractive and meaningful looks to android.
1. Environment
a. 3D World
A Surrounding or a 3D place where the material can place is called the material Environment. As you can see in the image the Edges of the device represent specific axis. Height of the device represent the Y axis, Width represents the X axis and thickness is used for Z-axis. b. Light and Shadow Within Material Environment, Virtual lights illuminate scene. There are two sources of light in the environment
1. Key Light It creates directional shadow, which means the source of light is somewhere above the material throwing light at some angle.
2. Ambient Light It creates soft shadows from all angles, which means the light sources is placed exactly perpendicular to the material.
In real time shadows are the result of obstruction of light by an object , similarly in android when material obstruct the light along z axis creates shadows.
2. Material Properties
&npsb&npsba. Physical Properties
1. Materials May have varied height and width but with uniform thickness. As shown in the pictures, this way of representing material where the thickness is varying is not allowed.
2. Shadows cast should be natural, shadows must relate with relative elevation between material elements for a more natural feel.
3. Contents of any shape and color can be displayed within the material. Content thickness doesn't not effect the material thickness
4. Contents inside the material can behave like an independent object and can transform into different shape and size and can easily move along the material plane, but all happens within the bounds of the material.
5. Materials are solid. Thus, input event cannot pass through the material as shown in figure. This represents that the focus goes to below this material which is not recommended.
6.Material cannot occupy same dimension in space. If any such requirement you have, then use elevation technique to separate them in space. Here the way they are placed do not give a cue that the material is placed above the other material, it more looks like both the material gets dissolve together.
7. According to the physics two solids cannot penetrate each other, the similar behavior applied with material which restrict them to pass from one another.
b. Transforming Properties -
Material can change shape. Material can shrink or grow along its plane But material can not bend or folds. Concatenating two material sheet is allowed to make a single sheet of material. Material can split into parts and can join to regain its original state.
c. Movement of Material
Material can spontaneously generated and destroyed anywhere in the environment. Material can move along any axis. And Z-axis motion is specially a result of user interaction with the material.
Objects in 3D Space:-
Objects in the material design obey the same physical law which are applied for an real time object. They possessed the similar qualities of an real time object. Objects can stacked or affixed to one another, cast shadows and reflect light. So some points which we need to care while the development of an app, is The Objects Elevation and its relationship with the rest of the objects in the material environment. So lets look into Elevation first , and see how does it gives a real time effect in android.
a. Elevation
Its a relative difference between the two surfaces along z axis, its generally measured in dp. We can account the elevation difference between two objects by measuring difference from the top of one's surface to top of another one. Resting Elevation : Its a default elevation of an object, whenever any event results to change the elevation of that object as soon as the event completed the object must come back to its original elevation or the resting elevation. Responsive elevation and dynamic elevation Some components perform responsive elevation, the states like focused , pressed or normal which depends on the user input type may results for different elevation on different state. These elevation changes implemented through dynamic elevation offset. Dynamic elevation offset is the goal elevation for the component to move towards, relative to the component's resting state. They also ensure that the elevation changes are
consistent across actions and component types.
Here for example , if we are declaring the offset of 6dp for a particular state then for each component at that particular state the elevation raise would be 6 dp. Functional Shadows Shadows provides visual cues to objects depth and directional movement. Shadows can hint the amount of separation between two surfaces. We can determine the object's elevation by its shadow. And when objects are in motion its quite easy to determine the direction movement of the object by the appearance of its shadow. Like increase in elevation of an object results more dark and large shadow. b. Object Relationship Object Hierarchy a. Objects can moved independent to each other or constrained by objects higher in hierarchy b. All objects are a part of hierarchy, which defines the Parent child relationship c. Parent child relationship defines - Each object has one parent - Each object may have any number of child. - Children inherit trans formative properties from their parents - Siblings are objects at same level of hierarchy Exception There are some exceptions which do not follow the parent child relationship. Some primary UI elements, does not effect by the transformation of the other element in the layout. Views like, Floating action button, Navigation Drawer, Action Bar and Dialog they do not effect by the change in the state of their parent. Interaction Child having a relationship with their parents, must have minimal z axis elevation, so that no other object gets inserted in between them. Reference :- MATERIAL DESIGN ANDROID
A Surrounding or a 3D place where the material can place is called the material Environment. As you can see in the image the Edges of the device represent specific axis. Height of the device represent the Y axis, Width represents the X axis and thickness is used for Z-axis. b. Light and Shadow Within Material Environment, Virtual lights illuminate scene. There are two sources of light in the environment
1. Key Light It creates directional shadow, which means the source of light is somewhere above the material throwing light at some angle.
2. Ambient Light It creates soft shadows from all angles, which means the light sources is placed exactly perpendicular to the material.
In real time shadows are the result of obstruction of light by an object , similarly in android when material obstruct the light along z axis creates shadows.
2. Material Properties
&npsb&npsba. Physical Properties
1. Materials May have varied height and width but with uniform thickness. As shown in the pictures, this way of representing material where the thickness is varying is not allowed.
2. Shadows cast should be natural, shadows must relate with relative elevation between material elements for a more natural feel.
3. Contents of any shape and color can be displayed within the material. Content thickness doesn't not effect the material thickness
4. Contents inside the material can behave like an independent object and can transform into different shape and size and can easily move along the material plane, but all happens within the bounds of the material.
5. Materials are solid. Thus, input event cannot pass through the material as shown in figure. This represents that the focus goes to below this material which is not recommended.
6.Material cannot occupy same dimension in space. If any such requirement you have, then use elevation technique to separate them in space. Here the way they are placed do not give a cue that the material is placed above the other material, it more looks like both the material gets dissolve together.
7. According to the physics two solids cannot penetrate each other, the similar behavior applied with material which restrict them to pass from one another.
b. Transforming Properties -
Material can change shape. Material can shrink or grow along its plane But material can not bend or folds. Concatenating two material sheet is allowed to make a single sheet of material. Material can split into parts and can join to regain its original state.
c. Movement of Material
Material can spontaneously generated and destroyed anywhere in the environment. Material can move along any axis. And Z-axis motion is specially a result of user interaction with the material.
Objects in 3D Space:-
Objects in the material design obey the same physical law which are applied for an real time object. They possessed the similar qualities of an real time object. Objects can stacked or affixed to one another, cast shadows and reflect light. So some points which we need to care while the development of an app, is The Objects Elevation and its relationship with the rest of the objects in the material environment. So lets look into Elevation first , and see how does it gives a real time effect in android.
a. Elevation
Its a relative difference between the two surfaces along z axis, its generally measured in dp. We can account the elevation difference between two objects by measuring difference from the top of one's surface to top of another one. Resting Elevation : Its a default elevation of an object, whenever any event results to change the elevation of that object as soon as the event completed the object must come back to its original elevation or the resting elevation. Responsive elevation and dynamic elevation Some components perform responsive elevation, the states like focused , pressed or normal which depends on the user input type may results for different elevation on different state. These elevation changes implemented through dynamic elevation offset. Dynamic elevation offset is the goal elevation for the component to move towards, relative to the component's resting state. They also ensure that the elevation changes are
consistent across actions and component types. Here for example , if we are declaring the offset of 6dp for a particular state then for each component at that particular state the elevation raise would be 6 dp. Functional Shadows Shadows provides visual cues to objects depth and directional movement. Shadows can hint the amount of separation between two surfaces. We can determine the object's elevation by its shadow. And when objects are in motion its quite easy to determine the direction movement of the object by the appearance of its shadow. Like increase in elevation of an object results more dark and large shadow. b. Object Relationship Object Hierarchy a. Objects can moved independent to each other or constrained by objects higher in hierarchy b. All objects are a part of hierarchy, which defines the Parent child relationship c. Parent child relationship defines - Each object has one parent - Each object may have any number of child. - Children inherit trans formative properties from their parents - Siblings are objects at same level of hierarchy Exception There are some exceptions which do not follow the parent child relationship. Some primary UI elements, does not effect by the transformation of the other element in the layout. Views like, Floating action button, Navigation Drawer, Action Bar and Dialog they do not effect by the change in the state of their parent. Interaction Child having a relationship with their parents, must have minimal z axis elevation, so that no other object gets inserted in between them. Reference :- MATERIAL DESIGN ANDROID