Profile

Cover photo
Stratos Theodorou
Works at Globo
110 followers|192,607 views
AboutPosts

Stream

Stratos Theodorou

Shared publicly  - 
 
There goes pixel-perfect. Hello pixel-plus-one-perfect!
 
This one is for +Ron Amadeo and his earlier https://plus.google.com/u/0/+RonAmadeo/posts/hXfhC6CTf7Z. It's literally #pixelpushing .
Off by a pixel. About a month ago I was tagged by Ron Amadeo who spotted an off-by-a-pixel misalignment in some of the content rows in the Play Store app. This is the story of that extra pixel – as illustrated above with zoomed in portion in the inset showing that the last card in the row is by ...
25 comments on original post
1
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
LinearLayout-like FrameLayout? I want it!! #androiddev
 
Apparently the release 22.2.0 of the support libraries also includes a com.android.support:percent library with a PercentFrameLayout and PercentRelativeLayout class.

#androiddev
5 comments on original post
1
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
More cheese for Android developers! #androiddev
 
More Material Design with Topeka for Android

#Materialdesign is a new system for visual, interaction and motion design. We originally launched the Topeka web app as an Open Source example of material design on the web.

Today, we’re publishing a new material design example: the Android version of Topeka. It demonstrates that the same branding and material design principles can be used to create a consistent experience across platforms.

Learn more on the Android Developers blog: http://goo.gl/ZQpsL4

#AndroidDev  
12 comments on original post
1
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
I totally agree. Data Binding sounds very promising and I also loved the (long awaited for) fine-grained permissions at runtime. Otherwise, nothing too special.
Many thanks also to the android tools team for making our lives easier! Great announcements yesterday.
#io15
 
Except for Data Binding Library, GCM for iOS and topics subscription and Support Design Library, I personally think that this year's I/O has not met my expectations.

Still waiting to see the Brillo project live with all its goodies (Weave etc.).

P.S.1:Hope that the Data binding Library will grow enough to be a default way of constructing Apps in Android. It really is powerful at least Developer-friendly wise. Got to see it performance-wise though!
1 comment on original post
1
Chris Margonis's profile photoStratos Theodorou's profile photo
2 comments
 
+Chris Margonis everyone is making an OS for IoT nowadays! I guess Google had to try this, see if they can make Android the primary platform for IoT devices.
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
More material, more fun!
Google Developers originally shared to I/O:
 
Get ready for even more material design

Google I/O 2015 kicks off tomorrow, and we’ve got an exciting lineup of design-focused content to experience both in-person and online. This year, we’re focusing on the ways we’re making it easier than ever to design and develop in material—with added assets and resources, backwards compatibility, and continuous updates to our design guidelines. We’re also celebrating some of the inspiring ways designers and developers have started to bring material design to life in their own products. Tune in at 4PM PDT on Thursday, May 28, to hear Matias Duarte’s “Material Now” session (goo.gl/gVZiIi), to get a complete overview, and keep a look out for more updates.

#io15   #materialdesign  
20 comments on original post
3
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
 
PSA: Linking against platform libraries not in the NDK could break your app

Android is moving from OpenSSL to BoringSSL in the AOSP (https://goo.gl/BZOaBc).  If your app links against platform libraries (such as libcrypto.so) that aren’t in the Android NDK, it’ll likely break in a future platform release.

The move to BoringSSL will increase the consistency amongst Android, Chrome, and other products.  To find out more about BoringSSL and its motivations, see Adam Langley’s blog post (https://goo.gl/pFyZVI).  For most developers this should be an invisible change.  However some apps mistakenly link against the platform libcrypto.so or libssl.so, which isn’t part of the Android NDK API.  If you’re using the Android NDK in your app, you must not link against any library that isn’t part of the Android NDK API.  These libraries are not public API, and may change or break without notice across releases and devices. In addition, you may expose yourself to security vulnerabilities. Instead, you should modify your native code to call the Java cryptography APIs via JNI or to statically link against a cryptography library of your choice.

#AndroidDev   #BoringSSL  
2 comments on original post
1
Add a comment...
Have him in circles
110 people
Argyrios Kyrgiazos's profile photo
Kostas Dimitros's profile photo
Georgios Kafetzis's profile photo
Wojtek C.'s profile photo
Pavlos-Petros Tournaris's profile photo
Kostas Chasiotis's profile photo
Venia Betchava's profile photo
Dimitris Tsarouhas's profile photo
Dan Littler's profile photo

Stratos Theodorou

Shared publicly  - 
 
Here is your chance to get 5 free tickets from +GDG Thessaloniki to the first ever happened +droidcon in Greece on September the 10-12, 2015 in #Thessaloniki .

The first 5 followers who rightly spot out the venue where +Droidcon Greece is going to happen in Thessaloniki, will be granted one VIP ticket each to attend to the first #droidconGR  conf in Greece!

Disclaimer: from the competition are excluded members of the droidcon team, partners and their relative, as well as external collaborators

Instructions
1. Choose from the list below
2. Share the post and write with these hashtags  #droidconGR   #droidcon    #droidconGRvenue  your choice.
3. You will have till Monday the 20 of July to be able to access the competition, all other shares or reshares and answers will not be considered

We will announce the winners by mentioning them on our Google+ page

Fingers crossed to everybody!
22 votes  -  votes visible to Public
MUNICIPALITY OF THESSALONIKI
5%
TIF-HELEXPO
73%
THE MET HOTEL
14%
NOESIS
5%
THESSALONIKI CONCERT HALL
5%
4 comments on original post
1
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
 
Because Developing for Android was published as a series of chapters (we didn't want to bury everyone in its hugeness all at once), I've posted this as a "Contents" list to the chapters. I've also added a Contents section to the Introduction chapter.

Developing for Android
The Whole Frigging Thing

http://graphics-geek.blogspot.co.uk/2015/06/developing-for-android.html
A series of articles have been posted on the Google Developers publication on medium.com that explain the constraints of mobile applications and a set of rules to keep in mind in order to develop good, well-performing Android...
5 comments on original post
1
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
 
Composition over Inheritance
What it means for your Activities

So we've all heard the suggestion that we should prefer composition over inheritance. For those that haven't, the idea is classes should only inherit from classes if they can fully stand in for their parent class, not just to share some behavior (more information at [0]). Despite this, I can't count how many Android projects I've been on/seen that had some BaseActivity that all of their Activities must extend from.

This can be problematic on a few fronts. The most obvious is that when Joe Newguy comes in and adds ShinyFeatureActivity, there's nothing forcing him to make sure it extends BaseActivity. Hopefully it's caught in code review. Additionally, it prevents you from extending from any other Activity class (E.g. PreferenceActivity, ListActivity...). Many of these Activity subtypes have been replaced by Fragment subtypes, but not all. Some libraries might also need their own Activity subtype.

Somewhat more insidious is that you might have some behaviors that are used in several of your Activities, and another set of behaviors for another group of Activities. Since Java doesn't support multi-inheritance, you have no choice but to put all of the behaviors into a single base class if these groups overlap. That means reduced maintainability, and possibly some performance penalties.

It's easy to see why we like to do this. Code reuse is a good thing, right? And much of our common logic needs to happen at specific points in the Activity lifecycle. Application.ActivityLifecycleCallbacks can be a pain to work with (they're passed Activities rather than living in them) and likely need to be registered in Application.onCreate() which we try to avoid.

This is where headless Fragments come in. While a lot of Android developers think of Fragments as UI components, they're really more lifecycle components. So what do I mean by "headless"? Just that onCreateView() either isn't overridden or returns null. Essentially, these are Fragments that implement some process or control that doesn't have a UI itself.

To differentiate my headless Fragments from my View oriented Fragments, I've taken to suffixing my headless Fragments with "Helper" and other Fragments with "Fragment". For example, AnalyticsHelper would be a headless Fragment for attaching my analytics logic, while HeaderFragment shows a header View for something. This is totally optional, but I've found it helpful.

Since there is no UI for these Fragments, there is no layout ID necessary to inflate into or animations to worry about, so your factory methods can be smarter and more controlled. For that matter, they can handle adding the Fragment themselves. I've created a gist [1] that shows how to do this. In Android Studio, you can add this to the "File and Code Templates" section in settings, and when you create a new class (New -> Java Class), select it in the "Kind" dropdown.

Adding FooHelper to its parent is as simple as calling FooHelper.attach(this). You'll get compiler errors telling you if the parent doesn't implement FooHelper's callback interface, and if attach() had already been called, it will return the preexisting fragment. The gist includes overloads for framework Fragments and Activities, but switching them to use support Fragments and FragmentActivity is pretty trivial. It also includes a getParent() that is a simplified version of my FragmentUtils.getParent() gist [2].

Obviously headless Fragments are more useful than just getting stuff out of your BaseActivity. They're also great for encapsulating processes that need lifecycle callbacks (or onActivityResult(), or a child FragmentManager...). The great thing about replacing BaseActivity, though, is that now you can split up the "common" logic onto single-purpose modular components, and decide for each Activity which modules you actually need. If most of your Activities need a lot of the same modules there's no reason you couldn't write a CommonComponentsHelper to pull them in, but now you're not forced to keep all your common dependencies in one base class.

[0] http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance
[1] https://gist.github.com/keyboardr/ddf35148ca2c1a2bfbde
[2] https://gist.github.com/keyboardr/5455206
A file template for creating a headless Fragment. The attach() methods add the fragment to the parent if it doesn't already exist and returns the attached fragment. The methods ensure that the parent implements the parent interface. If needed, parameters may be added to the attach() methods to supply fragment arguments. - Gist is a simple way to share snippets of text and code with others.
25 comments on original post
2
1
teo ramone's profile photo
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
Android design support library!!! Yes, baby! #io15
2
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
It would be great if we had an I/O Extended in Athens too.
 
Stay tuned for more info ...

This year will be a relaxing coding evening fun event ;-)

to all of our members we will be sending out pre-filled tickets, for them to register and get official T-shirts, pins and gadgets, directly from Google ... so keep an eye on your email ;-)
4 comments on original post
4
Panayotis Tzinis's profile photoStratos Theodorou's profile photo
2 comments
 
+Panayotis Tzinis thanks!
Add a comment...

Stratos Theodorou

Shared publicly  - 
 
Some good friends are looking to expand their team with three awesome developers! Interested?

Mobile developer
https://threenitas.workable.com/jobs/11487/

Full-stack developer
https://threenitas.workable.com/jobs/47675/

Front-end developer
https://threenitas.workable.com/jobs/45851/
1
Add a comment...
People
Have him in circles
110 people
Argyrios Kyrgiazos's profile photo
Kostas Dimitros's profile photo
Georgios Kafetzis's profile photo
Wojtek C.'s profile photo
Pavlos-Petros Tournaris's profile photo
Kostas Chasiotis's profile photo
Venia Betchava's profile photo
Dimitris Tsarouhas's profile photo
Dan Littler's profile photo
Work
Occupation
Android Developer, Mobile UI/UX Engineer
Employment
  • Globo
    Lead Android Developer, 2014 - present
  • OpenCanvas
    Co-founder, Android Developer, Mobile UI/UX Engineer, 2013 - 2014
  • Mobzili
    Android Developer, Mobile UI Designer, 2011 - 2013
  • NCSR Demokritos
    Research Associate, 2011 - 2013
Links
Other profiles
Story
Tagline
Android, UX, Games and Stuff...
Basic Information
Gender
Male
Apps with Google+ Sign-in
  • Farms & Castles
  • Boom Dots
  • 8 Ball Pool
  • Flick Shoot 2
  • Little Bit Evil
  • Basketball Showdown 2015
  • REBUS - Absurd Logic Game
  • Final Kick
  • Only One
  • GDG
  • Project Default Service Account
  • Color Dash Puzzle
  • Let's Go Rocket
  • Hellrider
  • Daddy Long Legs
  • Mr. Muscle
  • Ram Bros
  • Risky Rescue
  • Hungry Shark Evolution
  • Slide Soccer
  • Seabeard
  • Cartel Crew
  • Running Circles
  • Pako - Car Chase Simulator
  • Asphalt 8:Airborne
  • Mad Bullets
  • elgl
  • Voxel Rush
  • Deemo
  • Dragon Hills
  • Archery Championship
  • 킥 히어로
  • Grey Cubes
  • Don't get fired!
  • Smash Hit
  • Angry Birds Under Pigstruction
  • Dead Among Us
  • Infinity dungeon
  • Jelly Jump
  • Wonderland
  • Mortal Kombat X
  • Ready Steady Bang
  • Brothers in Arms® 3
  • Project Default Service Account
  • Transmission
  • Follow way
  • Dude Perfect 2
  • Earn to Die 2
  • Fallout Shelter
  • Magic Rampage
  • Bio Inc.
  • Angry Birds Fight!
  • FRONTLINE COMMANDO:D-DAY 2
  • Dr. Driving