<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pabi Forbes </title>
    <description>The latest articles on DEV Community by Pabi Forbes  (@pabiforbes).</description>
    <link>https://dev.to/pabiforbes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F20492%2F1ff443a4-55d0-44ab-8fa0-ee7251355a8b.jpg</url>
      <title>DEV Community: Pabi Forbes </title>
      <link>https://dev.to/pabiforbes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pabiforbes"/>
    <language>en</language>
    <item>
      <title>Theming In Android Revisited: Part 2 - Typography</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Fri, 13 Sep 2019 06:26:13 +0000</pubDate>
      <link>https://dev.to/pabiforbes/theming-in-android-revisited-part-2-typography-13h3</link>
      <guid>https://dev.to/pabiforbes/theming-in-android-revisited-part-2-typography-13h3</guid>
      <description>&lt;p&gt;Theming your Android app is not just about choosing a color scheme and that was one of the mistakes that I made. Theming is composed of other factors such as Typography. &lt;/p&gt;

&lt;p&gt;You would think typography is just about choosing a font and slapping it not the the app right? Well, that's the second mistake that I made 😊.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Typography?
&lt;/h1&gt;

&lt;p&gt;Typography can be defined as the art and technique of arranging type. Although it is an area we usually depend on designers to attend to, I believe as developers, we should have a clue to how it works under the hood. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://material.io/"&gt;Material Design&lt;/a&gt; has a really cool guide to typography which can be found &lt;a href="https://material.io/design/typography/understanding-typography.html#"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Styling Text
&lt;/h2&gt;

&lt;p&gt;Using the Material Design Type Scale to style text in the app aids in creating a uniform look and feel across your app. It provides the following styles to apply to your texts:&lt;/p&gt;

&lt;h3&gt;
  
  
  Headline
&lt;/h3&gt;

&lt;p&gt;Headline styled text appear the largest on the screen. &lt;/p&gt;

&lt;h4&gt;
  
  
  Attributes:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;textAppearanceHeadline1&lt;/li&gt;
&lt;li&gt;textAppearanceHeadline2&lt;/li&gt;
&lt;li&gt;textAppearanceHeadline3&lt;/li&gt;
&lt;li&gt;textAppearanceHeadline4&lt;/li&gt;
&lt;li&gt;textAppearanceHeadline5&lt;/li&gt;
&lt;li&gt;textAppearanceHeadline6&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Subtitle
&lt;/h3&gt;

&lt;p&gt;Subtitle styled text appears smaller than Headline texts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Attributes:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;textAppearanceSubtitle1&lt;/li&gt;
&lt;li&gt;textAppearanceSubtitle2&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Body
&lt;/h3&gt;

&lt;p&gt;Body styled text is commonly used for long-from writing such as articles.&lt;/p&gt;

&lt;h4&gt;
  
  
  Attributes:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;textAppearanceBody1&lt;/li&gt;
&lt;li&gt;textAppearanceBody2&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Caption and Overline
&lt;/h3&gt;

&lt;p&gt;These have the smallest font sizes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Attributes:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;textAppearanceCaption and textAppearanceOverline respectively.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Button
&lt;/h3&gt;

&lt;p&gt;Used to style text that appears on buttons. &lt;/p&gt;

&lt;h4&gt;
  
  
  Attributes:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;textAppearanceButton&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Material Design Type Scale In Action
&lt;/h1&gt;

&lt;p&gt;You can use type scale, Headline for example, in your app as follows:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;And for text on buttons, you can style it as follows:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;This allows you to edit the attributes to better suit your app's look and feel. &lt;/p&gt;

&lt;p&gt;A full list of Material Design Type Scale can be found &lt;a href="https://material.io/design/typography/the-type-system.html#type-scale"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Comment with a pic of how you styled text for your app. &lt;/p&gt;

&lt;h2&gt;
  
  
  References and Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.creativebloq.com/typography/what-is-typography-123652"&gt;Creative Bloq :What Is Typography?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Material Design &lt;a href="https://material.io/design/typography/the-type-system.html#"&gt;Typography&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cover Image: Florian Klauer on &lt;a href="https://unsplash.com/photos/-K6JMRMj4x4"&gt;Unsplash&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>android</category>
      <category>typography</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Theming In Android Revisited: Part 1</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Sat, 03 Aug 2019 19:03:01 +0000</pubDate>
      <link>https://dev.to/pabiforbes/theming-in-android-revisited-part-1-21m7</link>
      <guid>https://dev.to/pabiforbes/theming-in-android-revisited-part-1-21m7</guid>
      <description>&lt;p&gt;Last year, some time in July, I wrote a &lt;a href="https://dev.to/pabiforbes/theming-your-android-app-3md9"&gt;blog post&lt;/a&gt; about theming in Android. The post received some good comments, so I decided to revisit the topic with newly acquired information to share with the community. But before we get into how to theme our apps, let's see why it should be considered.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Theming? 🤷🏿
&lt;/h1&gt;

&lt;p&gt;A theme can be described as &lt;em&gt;unifying an idea and theming is designing or bringing that idea to life to an object, application, or space&lt;/em&gt;. Theming is used to create a holistic look and feel.&lt;/p&gt;

&lt;p&gt;Should we care about how our application looks like? &lt;br&gt;
Well, you would want to create a memorable experience for your end users. And to create a reusable set of attributes to apply to your entire application. Theming also enables us to create visual consistency in our applications. &lt;a href="https://www.smashingmagazine.com/2018/02/comprehensive-guide-to-mobile-app-design/"&gt;Smashing Magazine&lt;/a&gt; describes visual consistency as follows - &lt;em&gt;"Typefaces, buttons, and labels need to be consistent throughout the app"&lt;/em&gt; . &lt;/p&gt;

&lt;p&gt;Let's get into theming, for this post, we will be making use of Material Components. Add the following to your gradle file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;com.google.android.material:material:$material_version&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Color 🎨
&lt;/h2&gt;

&lt;p&gt;Color was the main topic in my previous post about theming. I also included useful tools such as the &lt;a href="https://www.materialpalette.com/"&gt;Material Design Palette&lt;/a&gt; and the &lt;a href="https://material.io/tools/color/#!/?view.left=0&amp;amp;view.right=0"&gt;Color Tool&lt;/a&gt;. Extracting colours from these tools might look like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TaCHW8NQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/de29ded5h8osn9z7a4xc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TaCHW8NQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/de29ded5h8osn9z7a4xc.png" width="675" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And as pointed out in the previous post by, &lt;/p&gt;
&lt;div class="ltag__user ltag__user__id__"&gt;
    &lt;div class="ltag__user__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xtH13c6f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/practicaldev/image/fetch/s--diPD5F8K--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://thepracticaldev.s3.amazonaws.com/i/99mvlsfu5tfj9m7ku25d.png" alt="[deleted user] image"&gt;
    &lt;/div&gt;
  &lt;div class="ltag__user__content"&gt;
    &lt;h2&gt;[Deleted User]&lt;/h2&gt;
    &lt;div class="ltag__user__summary"&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;
 there seems to be a duplication of color from the exported file from the Material Color Tool. So how do we solve the duplication issue? Well, it is quite simple, we name our colors. A cool online tool you can make use of  is &lt;a href="http://chir.ag/projects/name-that-color"&gt;Name that Color&lt;/a&gt;, and the result looks like this:

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9E4Wb72q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vtd8juzvr8zbjiyjex3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9E4Wb72q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/vtd8juzvr8zbjiyjex3a.png" width="738" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That helped us get rid of duplicate colors and we named our colors, because colors have names. That will be particularly useful if we need to define multiple themes for our apps. This is how we will define the style for the app's theme using the colors:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eHXi6R5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9tm3ishuenght5yrzv4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eHXi6R5h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9tm3ishuenght5yrzv4j.png" width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  On Colors
&lt;/h3&gt;

&lt;p&gt;"On" Colors - namely On Primary, On Secondary, On Background, On Surface, On Error, as seen in the image above, are used to usually used for iconography, text, and strokes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cool Resources 👀
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://material.io/design/color/the-color-system.html"&gt;Material Design- The Color System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://material.io/"&gt;Material Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.uplabs.com/"&gt;Uplabs&lt;/a&gt; &lt;em&gt;for some inspiration&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.smashingmagazine.com/2018/02/comprehensive-guide-to-mobile-app-design/"&gt;Smashing Magazine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Happy Theming&lt;/em&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>beginners</category>
      <category>theme</category>
      <category>style</category>
    </item>
    <item>
      <title>Android Animations Using Lottie</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Wed, 06 Mar 2019 04:54:48 +0000</pubDate>
      <link>https://dev.to/pabiforbes/android-animations-using-lottie-34df</link>
      <guid>https://dev.to/pabiforbes/android-animations-using-lottie-34df</guid>
      <description>&lt;h1&gt;
  
  
  Animations, Differently
&lt;/h1&gt;

&lt;p&gt;I have written two blog posts based on my (first ever) talk about Android Animations. Little did I know that two months after, I would be given a task that would require me to revisit animations. But this time, I had to approach animations differently. &lt;em&gt;How?!&lt;/em&gt; you may ask...&lt;/p&gt;

&lt;h1&gt;
  
  
  Using Lottie
&lt;/h1&gt;

&lt;p&gt;The task was to replace all the progress bars in the Android application, with the custom loaders from the Illustrators in the team. So this time, I would not make use of the &lt;em&gt;View Animation Framework&lt;/em&gt; nor the &lt;em&gt;Property Animation Framework&lt;/em&gt;. &lt;br&gt;
The Illustrators provided the custom loader animations in the form of a json file. So how do we load json animation files? By using a cool library called Lottie. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://airbnb.design/lottie/"&gt;Lottie&lt;/a&gt; for Android is a library created by &lt;a href="https://airbnb.design/introducing-lottie/"&gt;Airbnb&lt;/a&gt; that aids in rendering animations created using After Effects. &lt;/p&gt;

&lt;h1&gt;
  
  
  The Setup
&lt;/h1&gt;

&lt;p&gt;Inside your app gradle file in your project add the following dependency:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dependencies {&lt;br&gt;
  implementation 'com.airbnb.android:lottie:$lottieVersion'&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that is all you need to get started. &lt;/p&gt;

&lt;h1&gt;
  
  
  Loading Animations
&lt;/h1&gt;

&lt;p&gt;To make use of the Lottie tool, animations need to be placed inside the &lt;em&gt;assets&lt;/em&gt; (...\app\src\main\assets) folder inside your project.This is where Lottie loads the animations from.&lt;br&gt;
Once the animations are placed in the folder, we can add them to the layouts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adding Lottie Animation Views To Layouts
&lt;/h3&gt;

&lt;p&gt;A Lottie Animation View is used to load a Lottie animation. To add a LottieAnimationView to a layout, we make use of the &lt;code&gt;&amp;lt;com.airbnb.lottie.LottieAnimationView/&amp;gt;&lt;/code&gt; tag as follows: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;com.airbnb.lottie.LottieAnimationView&lt;br&gt;
       android:layout_width="match_parent"&lt;br&gt;
       android:layout_height="wrap_content"&lt;br&gt;
       app:lottie_autoPlay="true"&lt;br&gt;
       app:lottie_loop="true"&lt;br&gt;
       app:lottie_fileName="your_filename.json" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, let's say we have a fingerprint animation we want to display while we authenticate the user's fingerprint. We would add it to a layout as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;com.airbnb.lottie.LottieAnimationView&lt;br&gt;
        android:layout_width="wrap_content"&lt;br&gt;
        android:layout_height="wrap_content"&lt;br&gt;
        app:lottie_autoPlay="true"&lt;br&gt;
       app:lottie_loop="true"&lt;br&gt;
        app:lottie_fileName="fingerprint.json" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Result:
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/a2pwf45j6sasipq7yn8v.gif"&gt;Fingerprint animation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Animations can help bring your application to life, help provide visual feedback for your users, and make the user interface more appealing and usable. Lottie is an awesome tool that can assist in achieving that. Go ahead and give it a try. &lt;/p&gt;

&lt;h1&gt;
  
  
  Previous Blogs Posts
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-1-173p"&gt;Bringing Your Android Application To Life Using Animations ~ Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-2-3291"&gt;Bringing Your Android Application To Life Using Animations ~ Part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Quick Tutorial
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/PabiMoloi/AnimationsWithLottie/tree/develop"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Cool Resources:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lottiefiles.com/"&gt;Lottie Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/fragmented/082-airbnbs-gabriel-tells-how-to-animate-with-lottie"&gt;Fragmented Podcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://airbnb.io/lottie/android/android.html#getting-started"&gt;Lottie ~ Get Started&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Credits:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://lottiefiles.com/user/7852"&gt;Fingerprint Animation file&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>android</category>
      <category>lottie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Developer's Digest: Revisited</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Tue, 19 Feb 2019 11:24:34 +0000</pubDate>
      <link>https://dev.to/pabiforbes/developers-digest-revisited-3k71</link>
      <guid>https://dev.to/pabiforbes/developers-digest-revisited-3k71</guid>
      <description>&lt;h1&gt;
  
  
  The Developer's Digest...ive System
&lt;/h1&gt;

&lt;p&gt;In case you missed the original post, you can find it &lt;a href="https://dev.to/pabiforbes/a-developers-diet-38bi"&gt;here&lt;/a&gt;, where I gave readers a run down of how my diet looks like.&lt;/p&gt;

&lt;p&gt;A lot has changed since, and seeing more posts about keeping healthy as a developer, I was inspired to write about my diet again. I am still a "lazy chewer" (if that term exists), but I have incorporated more meals in a day to my diet and I take more vitamins. Here's a breakdown of my meals in an average day at work:&lt;/p&gt;

&lt;h3&gt;
  
  
  Breakfast
&lt;/h3&gt;

&lt;p&gt;I start my morning by taking some Spirulina Powder mixed with water, about 250ml . I then have my breakfast typically at around 05:45am and it composes of some bran cereal with warm milk (lactose free). I then take my Vitamin B Complex, Omega vitamins, as well as my Iron supplements tablets. One of each.&lt;/p&gt;

&lt;h3&gt;
  
  
  Snack One
&lt;/h3&gt;

&lt;p&gt;This snack is a smoothie that I have 3 hours after breakfast and it is made with Oats, milk, yoghurt ,honey, berry mix, egg, and some hemp powder. I know some people are horrified of the thought of a raw egg in a drink, but I can barely taste it. I also try to change up the fruit mix for my smoothie from day to day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Snack Two
&lt;/h3&gt;

&lt;p&gt;Green salad, chicken breasts with some salad dressing or mayonnaise. &lt;br&gt;
I usually eat this an hour or two after drinking my smoothie.&lt;/p&gt;
&lt;h3&gt;
  
  
  Lunch
&lt;/h3&gt;

&lt;p&gt;Lunch is usually a larger portion as compared to the snacks and I usually have some red meat or fish, with a salad or two on the side, and rice with some gravy. &lt;/p&gt;
&lt;h3&gt;
  
  
  Snack Three
&lt;/h3&gt;

&lt;p&gt;A packet of crisps.&lt;/p&gt;
&lt;h2&gt;
  
  
  Dinner
&lt;/h2&gt;

&lt;p&gt;Dinner is similar to what I would have for lunch.&lt;/p&gt;

&lt;p&gt;And yes, I drink water throughout the day. Water is very essential. Changing my diet for the better has made a major difference. I feel less tired and I have become more productive. I do have days where I would have fast food, having a diet is not about eliminating certain foods but rather eating in moderation. &lt;/p&gt;
&lt;h1&gt;
  
  
  Some awesome posts to read:
&lt;/h1&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/httpjunkie" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F101586%2Fc763a588-ecf1-4925-aabd-8996593c640f.png" alt="httpjunkie"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/httpjunkie/a-developers-guide-to-getting-fit-pif" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;A Developers Guide to Getting Fit&lt;/h2&gt;
      &lt;h3&gt;Eric Bishard ・ Feb 9 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#fitness&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#guide&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/proticm" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F109144%2Fed970537-8179-47c9-b39d-283a62449f38.JPG" alt="proticm"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/proticm/4-tips-to-stay-fit-as-a-software-developer-12me" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;4 tips to stay fit as a software developer&lt;/h2&gt;
      &lt;h3&gt;Milos Protic ・ Jan 13 '19&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#fitness&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#lifestyle&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/ben" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Ff451a206-11c8-4e3d-8936-143d0a7e65bb.png" alt="ben"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ben/what-is-your-routine-for-staying-fit-and-healthy-2fc1" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;What is your routine for staying fit and healthy?&lt;/h2&gt;
      &lt;h3&gt;Ben Halpern ・ May 23 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#discuss&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/_patrickgod" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F33342%2Fdf716cd6-614f-4d9a-bf24-9bf665b44b27.jpg" alt="_patrickgod"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/_patrickgod/6-ways-to-start-getting-physically-fit-as-a-coder-3k5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;6 Ways to Start Getting Physically Fit as a Coder&lt;/h2&gt;
      &lt;h3&gt;Patrick God ・ Dec 2 '17&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#health&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#life&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#fitness&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;What does your diet look like?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy reading and eating!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>developer</category>
      <category>health</category>
      <category>discuss</category>
    </item>
    <item>
      <title>DevFestZA: Bringing Your Android Application To Life Using Animations (Part 2)</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Thu, 10 Jan 2019 03:53:26 +0000</pubDate>
      <link>https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-2-3291</link>
      <guid>https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-2-3291</guid>
      <description>&lt;p&gt;In case you have missed Part 1 of this blog post series, you can catch up below:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/pabiforbes" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F20492%2F1ff443a4-55d0-44ab-8fa0-ee7251355a8b.jpg" alt="pabiforbes"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-1-173p" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;DevFestZA: Bringing Your Android Application To Life Using Animations (Part 1)&lt;/h2&gt;
      &lt;h3&gt;Pabi Forbes  ・ Dec 24 '18&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#android&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#animations&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devfestza&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;I chose to speak about Android Animations because I started to explore them a bit, and they are fun.&lt;br&gt;
Android provides two frameworks that you can use to implement animations; namely the  &lt;em&gt;View Animation Framework&lt;/em&gt; and the &lt;em&gt;Property Animation Framework&lt;/em&gt; .&lt;br&gt;
You can read more about them &lt;a href="https://developer.android.com/reference/android/view/animation/package-summary"&gt;here&lt;/a&gt; and &lt;a href="https://developer.android.com/guide/topics/graphics/prop-animation"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To see how my talk went (my voice was shaky because I was extra nervous), you can view it on GDGJohannesburg's YouTube playlist &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/4KfO_YKILG8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;More useful links:&lt;br&gt;
&lt;a href="https://material.io/design/motion/understanding-motion.html#usage"&gt;Material Design: Understanding Motion&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.android.com/reference/android/animation/package-summary"&gt;Android Animation Library&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.raywenderlich.com/350-android-animation-tutorial-with-kotlin"&gt;Android Rocket Demos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.invisionapp.com/inside-design/importance-good-animation-ux/"&gt;Functional Animations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy Reading&lt;/em&gt; &lt;/p&gt;

</description>
      <category>android</category>
      <category>animations</category>
      <category>devfestza</category>
      <category>beginners</category>
    </item>
    <item>
      <title>DevFestZA: Bringing Your Android Application To Life Using Animations (Part 1)</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Mon, 24 Dec 2018 13:13:27 +0000</pubDate>
      <link>https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-1-173p</link>
      <guid>https://dev.to/pabiforbes/devfestza-bringing-your-android-application-to-life-using-animations-part-1-173p</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v_jan3lY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/127uw31byjcdi1cwum1x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v_jan3lY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/127uw31byjcdi1cwum1x.jpg" alt="Header Image" width="548" height="821"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DevFestZA&lt;/strong&gt;&lt;br&gt;
The South African leg of DevFest was hosted in the city of Johannesburg, and it was amazing. I had submitted a topic for the CFP (Call For Proposal), which had to be about Google technologies. My topic was &lt;em&gt;Bringing Your Android Application To Life Using Animations.&lt;/em&gt;&lt;br&gt;
I was super nervous as this was my first time ever giving a talk about Android. I just thought to myself: &lt;em&gt;The room will have Android professionals, who are possibly more experienced than I am, what could they possibly learn from me?&lt;/em&gt; &lt;br&gt;
My plan of action was to share what I have learnt about animations. Similar to how we write about our experiences while coding, but this time, it was not a blog post, rather a talk.&lt;/p&gt;

&lt;p&gt;I chose animations because: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I had slowly started exploring animations&lt;/li&gt;
&lt;li&gt;It would be a topic that I would have fun talking about&lt;/li&gt;
&lt;li&gt;Animations are fun, we can animate almost anything in our Android apps&lt;/li&gt;
&lt;li&gt;Animations are often overlooked&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Planning It All Out&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OvQ85nfg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ndsp608bobb1piqmqtwq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OvQ85nfg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/ndsp608bobb1piqmqtwq.jpg" alt="Brainstorming" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used my blog post planning techniques to help guide the structure of my talk. The technique has planning steps as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Introduction (this may be a background story as to why the content is created or the problem that you are trying to solve.)&lt;/li&gt;
&lt;li&gt;Body (the body will contain most of the content, it may also include steps in resolving the problem stated in the introduction.)&lt;/li&gt;
&lt;li&gt;Conclusion (you can state your final thoughts in the conclusion, maybe even the lessons you have learned from tackling the problem.) &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With that in mind, I planned my talk about animations to unfold as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What animations are?&lt;/li&gt;
&lt;li&gt;What role do they play?&lt;/li&gt;
&lt;li&gt;How to use animations?&lt;/li&gt;
&lt;li&gt;When to use animations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Content&lt;/strong&gt;&lt;br&gt;
When we create applications, we rarely create them to be used solely by ourselves. We want to create applications that are functional and visually appealing.People interact with their mobile phones everyday. Mobile phones have become our go-to devices. People naturally expect some form of feedback when they interact with their mobile phones.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Feedback is essential.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Using animations is a great way to provide feedback. Objects respond to our interactions &amp;amp; people expect a similar level of responsiveness from application elements. Animations add visual cues that notify the user about what is going on in your application. Animations are particularly useful when the UI changes state; such as when content loads or a new action has become available.&lt;/p&gt;

&lt;p&gt;InVision makes use of the term &lt;em&gt;Functional Animations&lt;/em&gt; : “Functional animations are types of animations that are subtle, have clear and logical purpose.”&lt;br&gt;
It does not mean that every element should be animated. Animations should be meaningful and be used to provide reassurance.&lt;/p&gt;

&lt;p&gt;In part 2, we will explore Android animations and I will share some useful links.&lt;/p&gt;

&lt;p&gt;Cover Image  by DESIGNECOLOGIST on Unsplash&lt;br&gt;
Sticky Note Image by rawpixel on Unsplash&lt;/p&gt;

</description>
      <category>android</category>
      <category>animations</category>
      <category>devfestza</category>
    </item>
    <item>
      <title>Spooktober: Git Horror Story</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Sun, 28 Oct 2018 13:16:09 +0000</pubDate>
      <link>https://dev.to/pabiforbes/spooktober-git-horror-story-f90</link>
      <guid>https://dev.to/pabiforbes/spooktober-git-horror-story-f90</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitx8c94pz5z9ai8poiue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitx8c94pz5z9ai8poiue.png" alt="Header Image" width="721" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since it is the month of all things spooky, I thought it would be a good idea to post one of my scary experiences while developing, to get into the mood of Spooktober.&lt;br&gt;
This scary experience comes in the form of git. So here's the story...&lt;/p&gt;

&lt;p&gt;I was placed on an Android project, where I had to add a new feature and apply flavour specific resources. So the first thing to do was to clone the project. Alright, I've done that before so it shouldn't be an issue. Oh was I wrong. The project source resides on BitBucket and I make use of Git Bash terminal to clone and to run other commands. I go to BitBucket and choose the &lt;strong&gt;develop&lt;/strong&gt; branch (see image below), then proceeded to press the "Clone" button, pasted the link into my terminal.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m5qaqqct8o6mxashbxh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m5qaqqct8o6mxashbxh.PNG" alt="develop branch" width="447" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The develop branch on BitBucket. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At this point, all seems well. I then proceed to Android Studio to open up the project to make sure that it builds. The project runs a successful build. I go back to my terminal again to run &lt;em&gt;$git status&lt;/em&gt; to see the status of the branch I'm currently in. I then noticed that I'm in &lt;em&gt;master&lt;/em&gt;. I then run &lt;em&gt;$git checkout develop&lt;/em&gt; .  It returns a message that states that the branch does not exist. &lt;br&gt;
&lt;em&gt;How can this be possible as it exists on BitBucket.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;I repeat the whole process again, hoping for a different outcome. I still encounter the same issue. I ask a colleague if he has a successful clone. He says &lt;em&gt;no&lt;/em&gt;. I then wonder if we were given the correct access rights on BitBucket...&lt;br&gt;
But that wouldn't be the cause because I could view all of the branches. At this point I'm too shy to approach my manager for this silly situation.&lt;br&gt;
Next step: Dig up solutions on Stackoverflow.&lt;/p&gt;

&lt;p&gt;I Googled my issue, found some suggested solutions on Stackoverflow. The first few solutions didn't work at all. I digged deeper, and finally a solution that worked. The command is &lt;em&gt;$git clone -b  &lt;/em&gt; .&lt;/p&gt;

&lt;p&gt;Some of the reasons why I did not approach my senior/team lead initially was because: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I wanted to should show attempts in trying to solve my issue.&lt;/li&gt;
&lt;li&gt;It felt embarrassing, as I am a junior dev. And I've been working with git commands for 3 years so far.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Lessons to take away:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Attempt to solve an issue before you approach a team mate.&lt;/li&gt;
&lt;li&gt;Do not spend too long on trying to solve an issue.&lt;/li&gt;
&lt;li&gt;Alert your team mates of the issue in time.&lt;/li&gt;
&lt;li&gt;Share your solutions with the community.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Which git commands do the trick for you?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.git-tower.com/blog/git-cheat-sheet" rel="noopener noreferrer"&gt;https://www.git-tower.com/blog/git-cheat-sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.atlassian.com/dam/jcr:8132028b-024f-4b6b-953e-e68fcce0c5fa/atlassian-git-cheatsheet.pdf" rel="noopener noreferrer"&gt;https://www.atlassian.com/dam/jcr:8132028b-024f-4b6b-953e-e68fcce0c5fa/atlassian-git-cheatsheet.pdf&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cover Photo by Ehud Neuhaus on Unsplash&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>android</category>
      <category>terminal</category>
    </item>
    <item>
      <title>Name a more iconic duo...I'll wait.</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Sat, 22 Sep 2018 08:01:33 +0000</pubDate>
      <link>https://dev.to/pabiforbes/name-a-more-iconic-duoill-wait-gab</link>
      <guid>https://dev.to/pabiforbes/name-a-more-iconic-duoill-wait-gab</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5uoceb0595dfcpqvqme.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5uoceb0595dfcpqvqme.jpg" alt="Post Header Image" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this post, we will look into setting our app's icon and awesome resources we can get free to use icons from. &lt;/p&gt;

&lt;p&gt;One of the things that I struggled with whilst learning Android development was setting the app icon. I would usually just copy and paste the image resource into the project's drawable folder and then rename it to the current &lt;em&gt;ic_logo&lt;/em&gt; (very bad I know, but it was a hack).&lt;br&gt;
Doing it that way would work for some images, but it would look absolutely horrible for others. So I did some research because I really wanted to make my app look appealing. I then read up on using Android Studio Image Asset helper tool to help me achieve what I was initially trying to do. While I wait, let's dig a little deeper into icons and the helper tool.&lt;/p&gt;
&lt;h1&gt;
  
  
  What's In An Icon?
&lt;/h1&gt;

&lt;p&gt;Think of an icon as a brand image for your application. An app icon is a visual representation of your application. It appears on the user's home screen of their mobile device and in the app store.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Few Elements Of A Successful App Icon
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Unique&lt;/em&gt;&lt;br&gt;
Your app icon needs to be one of it's kind. It has to have an element that makes it stand out from the rest.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;User-Friendly&lt;/em&gt;&lt;br&gt;
Your app's icon needs to be easy to learn and to understand. The icon should be clean and simple.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Recognisable&lt;/em&gt;&lt;br&gt;
Users need to be able recognise or identify your icon from previous encounters or from knowledge of the icon.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Communicate Meaning&lt;/em&gt;&lt;br&gt;
A user should have an idea about the features of the app by taking a look at the icon. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Memorable&lt;/em&gt;&lt;br&gt;
People should ideally remember your app icon. Making your icon unique and user-friendly aids in making it memorable.&lt;/p&gt;
&lt;h1&gt;
  
  
  Icon vs Logo
&lt;/h1&gt;

&lt;p&gt;Icons should ideally represent an action a user can perform on the application. As mentioned before, it should &lt;em&gt;communicate meaning&lt;/em&gt;. A logo on the other hand, can be considered as imagery that represents a company or an organisation.&lt;/p&gt;
&lt;h1&gt;
  
  
  Setting Your App's Icon Using Android Studio Image Asset
&lt;/h1&gt;

&lt;p&gt;A really cool tutorial has been posted, as shown below, on setting up your app's icon that also shows you how to create adaptive icons.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h1&gt;
  
  
  Handy Links
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Awesome Sites To Get Free Icons
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.uplabs.com/search?q=icons" rel="noopener noreferrer"&gt;UpLabs&lt;/a&gt;&lt;br&gt;
&lt;a href="https://thenounproject.com/" rel="noopener noreferrer"&gt;The Noun Project&lt;/a&gt;&lt;br&gt;
&lt;a href="https://androidassetstudio.net/icons-launcher.html#" rel="noopener noreferrer"&gt;Android Asset Studio&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Always remember to attribute the creators of icons that you make use of.&lt;/em&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  More Resources
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://material.io/design/iconography/" rel="noopener noreferrer"&gt;Android Material Design Iconography&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.android.com/guide/practices/ui_guidelines/icon_design" rel="noopener noreferrer"&gt;Icon Design Guidelines&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Android Studio Image Asset coupled with an icon that truly represents your app, makes it easier to keep the imagery of your application consistent throughout all devices and Android software versions.&lt;/p&gt;

&lt;p&gt;Thank you to Harpal Singh for the header image, found on Unsplash.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy Reading.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>android</category>
      <category>icons</category>
    </item>
    <item>
      <title>Theming Your Android App</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Thu, 19 Jul 2018 11:22:11 +0000</pubDate>
      <link>https://dev.to/pabiforbes/theming-your-android-app-3md9</link>
      <guid>https://dev.to/pabiforbes/theming-your-android-app-3md9</guid>
      <description>&lt;p&gt;Theming your android app might be quite of a task if you don't have an eye for design and color combination. It's much easier when you are placed on a project that has designs created by a UI/UX designer. &lt;br&gt;
A theme is applied throughout the entire app, not just a single view. Theming your app includes creating a color scheme for it. An android app's color scheme is made up of a primary color,or sometimes a combination of the primary color and secondary color.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primary Color&lt;/strong&gt;&lt;br&gt;
The primary color is the color that the user will see on the screen and on your app's components the most. The primary color will appear on your appbar, status bar, and tabview for example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secondary Color&lt;/strong&gt;&lt;br&gt;
The secondary color can be used to emphasize the different components on the screen. The secondary color can be used on floating action buttons, progress bars, or switches for example. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Side Note:&lt;/em&gt;&lt;br&gt;
It is not always required to have a secondary color. The app can use the primary color's variants as it's secondary color. Primary color variants are the lighter and darker shades of the color.&lt;/p&gt;

&lt;p&gt;So how do we tackle the task of theming our apps? Fortunately for android beginners, &lt;a href="https://material.io/" rel="noopener noreferrer"&gt;Material Design&lt;/a&gt; has a cool color palette tool, called &lt;a href="https://material.io/tools/color/#!/?view.left=0&amp;amp;view.right=0" rel="noopener noreferrer"&gt;Color Tool&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte79wl52qhjv37ea98hi.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fte79wl52qhjv37ea98hi.PNG" alt="Visible Textview" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Color Tool helps you visualize how your app would look like with the colors you would choose.&lt;br&gt;
The tool also allows you to export the color xml and just paste it in your android colors.xml file.&lt;br&gt;
You simply click on the &lt;em&gt;Export&lt;/em&gt; button on the top right side of the website, it will then download your scheme as an xml file. You then simply copy the text from the xml file to your color.xml file of your Android project, as shown below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjpjtxxoi28gihdn0uq5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjpjtxxoi28gihdn0uq5.PNG" alt="Visible Textview" width="675" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another awesome tool is the &lt;a href="https://www.materialpalette.com/" rel="noopener noreferrer"&gt;Material Design Palette&lt;/a&gt;, which also provides a visualization of the theme. You can simply click on the download button to get the xml version of the scheme, and then just simply copy and paste it into your colors.xml file. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl8ty7b2epwxourq07zm.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftl8ty7b2epwxourq07zm.PNG" alt="Visible Textview" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the tools made available, it is now easier to style your app. Some useful resources:&lt;br&gt;
-&lt;a href="https://material.io/" rel="noopener noreferrer"&gt;Material Design&lt;/a&gt;&lt;br&gt;
-&lt;a href="https://developer.android.com/guide/topics/ui/look-and-feel/themes" rel="noopener noreferrer"&gt;Android Developer Guidelines&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Need some insipiration? Check out what other developers and designers are crafting on &lt;a href="https://www.uplabs.com/android" rel="noopener noreferrer"&gt;UpLabs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Credits:&lt;/em&gt;&lt;br&gt;
Cover Image - A big thank you to Markus Spiske, taken from &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>beginners</category>
      <category>theme</category>
    </item>
    <item>
      <title>Android Views: Peek-A-Boo</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Wed, 04 Jul 2018 06:06:41 +0000</pubDate>
      <link>https://dev.to/pabiforbes/android-views-peek-a-boo-5ehd</link>
      <guid>https://dev.to/pabiforbes/android-views-peek-a-boo-5ehd</guid>
      <description>&lt;p&gt;In this post, I will be talking about the &lt;em&gt;Visibility&lt;/em&gt; attribute for Android views. So what are Android Views? &lt;strong&gt;Android Views&lt;/strong&gt; are user interface elements that are drawn onto the screen and that a user can interact with. For example, a button, a textview,and an imageview.&lt;/p&gt;

&lt;p&gt;Android view attributes define how an element looks like, such as it's height, width, and color. Think of them as metadata for views. A view's visibility can be set to gone, invisible, or visible, as indicated in the sample code below:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvhwgktm02g92nr2037r.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvhwgktm02g92nr2037r.PNG" alt="Visible Textview" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;android:visibility="visible"&lt;/strong&gt;&lt;br&gt;
This is a view's visibility value by default. This means that the view will always be displayed on the screen.&lt;br&gt;
As it is default, a view's visibility does not have to be explicitly set to visible. As we can see with the sample below, the textview that displays the infamous "Hello World" is visible on the screen. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59dagyoshgsx5r60993e.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59dagyoshgsx5r60993e.PNG" alt="Visible Textview" width="496" height="886"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;android:visibility="gone"&lt;/strong&gt;&lt;br&gt;
When we set textview's visibility attribute to gone,&lt;br&gt;
it will simply not show on the screen and it's space on the layout will be occupied by surrounding elements.&lt;br&gt;
When the view is toggled from gone to visible, surrounding elements will simply make way for the view and the view will ocuppy it's space and show on the screen.&lt;br&gt;
Looking at our sample app below, we can see that the textview is not visible on the screen and it's space is occupied by the buttons.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2s21n9ukfavism2hdm7y.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2s21n9ukfavism2hdm7y.PNG" alt="Visible Textview" width="490" height="868"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;android:visibility="invisible"&lt;/strong&gt;&lt;br&gt;
If a view's visibility is set to invisible, the view will not be displayed, but it will still occupy it's space on a layout. So it might make the layout look a little weird with some extra space in-between elements.&lt;br&gt;
Taking a look back at our sample app, the textview is not shown, but it still occupies it's space. The buttons stay in their positions.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzgyu5e2th2s9mpsfoqw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgzgyu5e2th2s9mpsfoqw.PNG" alt="Visible Textview" width="490" height="861"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Changing Visibility On The Go&lt;/strong&gt;&lt;br&gt;
Toggling between the different visibility values can be easily achieved programatically. I have added the functionality of toggling between the different visibility attribute value behind the clicks of the buttons. When the "Gone" button is clicked, we change the visibility value to &lt;em&gt;gone&lt;/em&gt;. When the "Invisible" button is clicked, we change the visibility value to &lt;em&gt;invisible&lt;/em&gt;. When the "Visible" button is clicked, we simply change the visibility value to &lt;em&gt;visible&lt;/em&gt;. &lt;br&gt;
Take a peek below: &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbd6p8okf26pv9mkv5gtd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbd6p8okf26pv9mkv5gtd.PNG" alt="Visible Textview" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Toggling between the different visibility values aids us in showing the user relevant content depending on the activity being carried out on the screen. For example, we can show a loader when making a service call, and then only display the underlying content once we have a response from the server. The android visibility attribute is just one of many attributes that are available for us to use and play around with, so don't be shy to try them out. &lt;br&gt;
A cool post you can check out &lt;a href="https://guides.codepath.com/android/Defining-Views-and-their-Attributes" rel="noopener noreferrer"&gt;https://guides.codepath.com/android/Defining-Views-and-their-Attributes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Credits:&lt;/em&gt;&lt;br&gt;
Thank you to Andrei Lazarev for the amazing cover image take from &lt;a href="https://unsplash.com/photos/U47vtNMkyXg" rel="noopener noreferrer"&gt;https://unsplash.com/photos/U47vtNMkyXg&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>views</category>
      <category>beginners</category>
    </item>
    <item>
      <title>GDG Johannesburg: IWD Women TechMakers</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Tue, 10 Apr 2018 05:01:59 +0000</pubDate>
      <link>https://dev.to/pabiforbes/gdg-johannesburg-iwd-women-techmakers-165b</link>
      <guid>https://dev.to/pabiforbes/gdg-johannesburg-iwd-women-techmakers-165b</guid>
      <description>&lt;p&gt;GDG Johannesburg hosted a meetup on the 4th of April to celebrate International Women's Day. I attended the event and it was nothing but amazing.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is GDG Johannesburg?
&lt;/h1&gt;

&lt;p&gt;GDG Johannesburg (Google Developer Group Johannesburg) is a local South African community for developers who have a keen interest in Google's developer technologies. It is organized by Rebecca Franks, Christoff Jacobs, Joshua Leibstein, Peter John Welcome, and Kurt Mbanje.&lt;/p&gt;

&lt;p&gt;GDG Johannesburg runs meetups every first Wednesday of the month, and each event can have a variety of topics and speakers.&lt;/p&gt;

&lt;h1&gt;
  
  
  Women TechMakers Meetup
&lt;/h1&gt;

&lt;p&gt;This meetup was aimed at women, so as you would guess, the speakers were women.&lt;br&gt;
Here's what the line up looked like: &lt;/p&gt;

&lt;p&gt;17:00 - Welcome Drinks and Snacks&lt;br&gt;
17:30 - Intro to GDG &amp;amp; Women in Tech event welcome!&lt;br&gt;
18:05 - Talk 1 (15 min) -What the hell is UX and Human Centred Design anyway? (Niki De Bruyn)&lt;br&gt;
18:25 - Talk 2 (15 min) - Enhancing your app with Firebase (Mbalenhle Ndaba)&lt;br&gt;
19:00 - Talk 3 (45 min) - Building an artificial John Lennon with Keras (Jade Abbott)&lt;br&gt;
19:45 - End Drinks and Prizes&lt;/p&gt;

&lt;p&gt;I thoroughly enjoyed each talk and I have learnt so much from the ladies. The firebase talk was a bonus for me as I wanted to start using it for my future android projects.&lt;/p&gt;

&lt;h1&gt;
  
  
  Prizes
&lt;/h1&gt;

&lt;p&gt;I managed to win myself a discount voucher on any JetBrains product of my choice. I won the voucher due to the fact that I tweeted the most about the meetup.&lt;br&gt;
At the end of the talks, we also had to fill in a survey, I also won a T-Shirt for that, but I was feeling generous and I decided to hand the T-Shirt to another lady in the audience that hadn't won one yet. &lt;/p&gt;

&lt;p&gt;Overall, the meetup was fun and informative, also considering that it was my first time attending a meetup, ever! &lt;/p&gt;

&lt;p&gt;Did I mention that there was pizza and cupcakes? Well, there was pizza and cupcakes. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/6rdh23kf2gawhtqytl4r.jpg" rel="noopener noreferrer"&gt;https://thepracticaldev.s3.amazonaws.com/i/6rdh23kf2gawhtqytl4r.jpg&lt;/a&gt;&lt;br&gt;
&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/ampddwg4gn455qeefqtc.jpg" rel="noopener noreferrer"&gt;https://thepracticaldev.s3.amazonaws.com/i/ampddwg4gn455qeefqtc.jpg&lt;/a&gt;&lt;br&gt;
&lt;a href="https://thepracticaldev.s3.amazonaws.com/i/ktau3zlzhyiqhtk3u4xt.jpg" rel="noopener noreferrer"&gt;https://thepracticaldev.s3.amazonaws.com/i/ktau3zlzhyiqhtk3u4xt.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**GDG Johannesburg information extracted from &lt;a href="https://www.meetup.com/GDGJohannesburg/" rel="noopener noreferrer"&gt;https://www.meetup.com/GDGJohannesburg/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>womenintech</category>
      <category>firebase</category>
    </item>
    <item>
      <title>A Developer's Diet</title>
      <dc:creator>Pabi Forbes </dc:creator>
      <pubDate>Fri, 30 Mar 2018 17:38:31 +0000</pubDate>
      <link>https://dev.to/pabiforbes/a-developers-diet-38bi</link>
      <guid>https://dev.to/pabiforbes/a-developers-diet-38bi</guid>
      <description>&lt;h1&gt;
  
  
  The Developer's Digest...ive System
&lt;/h1&gt;

&lt;p&gt;"I would like to have a large number 6, with a side of cheesy fries, and a large soda." ... Well, that's not how my morning breakfast really goes. I usually have some oatmeal with a dash of milk in the morning, or some corn/bran flakes for breakfast. I would then wash all of that down with some ginger and lemon honeyed tea or some green tea. I have been trying to hold back on coffee a bit. After all, coffee is what fuels software developers. I have realized that green tea actually helps in keeping me awake. That is my morning diet routine.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's For Lunch?
&lt;/h1&gt;

&lt;p&gt;I have my lunch break at 11:30 am. I usually carry a home cooked meal for lunch, which, on average, has some veges and meat. If I don't carry a home cooked meal, my colleagues and I order some take out. The take out can vary from burgers to pizza, or simply some pie.&lt;/p&gt;

&lt;h1&gt;
  
  
  Dinner At Tiffany's
&lt;/h1&gt;

&lt;p&gt;Now this is where things get weird. I usually do not have an appetite come supper time. And no, my mom is not a bad cook. I usually get home from work, take a warm shower, do some yoga, have a cup of tea, and then hop on to my bed and read a book til I pass out. Still, no appetite. Even when I do force myself to eat, I can only take two spoonfuls and I feel full.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Snackdown
&lt;/h1&gt;

&lt;p&gt;I am not big on snacking. Maybe I will have a cup of yogurt and a fruit during the day, but is how far my snacking goes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Water, Water, and more Water
&lt;/h1&gt;

&lt;p&gt;We sometimes get so distracted by writing code, that we may actually forget to drink water. I try my best to get at least 1.5L of water in my system everyday.&lt;/p&gt;

&lt;h1&gt;
  
  
  Puree All The Things
&lt;/h1&gt;

&lt;p&gt;I am the laziest chewer(is this a proper word?) out there, well that I know off. I prefer eating warm and soft food. I usually warm up my bread before I eat it. Weird, I know. I do not eat crunchy food, it is loud and feels uncomfortable in my mouth. If I could, I would puree food and just drink it all up.&lt;/p&gt;

&lt;h1&gt;
  
  
  What's Your Diet?
&lt;/h1&gt;

&lt;p&gt;Do you have special dietary requirements? Are you a picky eater? What are you eating? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>developer</category>
      <category>food</category>
      <category>nomnom</category>
    </item>
  </channel>
</rss>
