SlideShare uma empresa Scribd logo
1 de 84
Baixar para ler offline
IMPROVING ANDROID EXPERIENCE FOR
BOTH USERS AND DEVELOPERS
droidcon Berlin 2013, Pavel Lahoda,Actiwerks Ltd.
LET’S HAVE A LITTLE WARMUP
ANDROID.UTIL.LOG
HOW MANYTIMESYOU’VETYPEDTHIS ?
prn.log("Index=" + i);
HOW ABOUTTHIS ?
public static String cc(int depth) {
	 	 if(skipCallStackCode == true) {
	 	 	 return NA; // short-circuit for production
	 	 }
	 	 StackTraceElement[] ste = getStackTrace(null);
	 	 int depthCount = 0;
	 	 boolean shallowFlag = true;
	 	 for(StackTraceElement element : ste) {
	 	 	 if(prn.class.getName().equals(element.getClassName()) == true) {
	 	 	 	 // always ignore elements that are above this class in the stack
	 	 	 	 shallowFlag = false;
	 	 	 } else {
	 	 	 	 if(shallowFlag == false) {
	 	 	 	 	 if(depthCount >= depth) {
	 	 	 	 	 	 String name = element.getFileName();
	 	 	 	 	 	 if(name != null) {
	 	 	 	 	 	 	 if(name.endsWith(".java")) {
	 	 	 	 	 	 	 	 name = name.substring(0, name.length()-5);
	 	 	 	 	 	 	 }
	 	 	 	 	 	 } else {
	 	 	 	 	 	 	 name ="[?]";
	 	 	 	 	 	 }
	 	 	 	 	 	 return name;
	 	 	 	 	 } else {
	 	 	 	 	 	 depthCount++;
	 	 	 	 	 }
	 	 	 	 }
	 	 	 }
	 	 }
	 	 return NA_BUG;
	 }
HOW DOES IT WORK ?
GITHUB LINK
WHERE ISTHE UX ?
HAVE TIME TO WORK ON AWESOME
STUFF !
IMPORTANCE OF HAVING
YOUR VIEW FLEXIBLE
ANDROID AND WEB COMMON STUFF
UNLIMITED AMOUNT OF DISPLAY SIZES
WEBTRENDS: RESPONSIVE DESIGN
ANDROIDTRENDS: LOTS OF WORK
CURRENT ANDROID LAYOUTS ARE
NOT FLEXIBLE ENOUGH
ALTERNATIVE:
USE PURE JAVAVIEWGROUP
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthSpecSize = View.MeasureSpec.getSize(widthMeasureSpec);
	 tinyGap = widthSpecSize/100;
	 myComponent.measure(View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY),
	 	 	 	 View.MeasureSpec.makeMeasureSpec(LayoutParams.WRAP_CONTENT, View.MeasureSpec.EXACTLY));
// more component’s measuring goes there
	 setMeasuredDimension(widthSpecSize, newHeight);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
myComponent.layout(x, y, x+myComponent.getMeasuredWidth(), y+titleLabel.getMeasuredHeight());
// more component’s layout goes there
}
ONMEASURE() - PLACE FORYOUR LOGIC
NO NEEDTO REBIND COMPONENTS OR
CALL SLOW LAYOUT INFLATE CODE
WORKS GREAT FOR ORIENTATION
CHANGES
BBC NEWS FORTABLETS EXAMPLE
INSPIRATION:
WEB RESPONSIVE LAYOUT
DEAL WITH MANY DIFFERENT SCREEN
SIZES
STANDOUT - FLOATING WINDOWS
ACTION BAR
ONE OF WORST EXAMPLES
OF API DESIGN
ACTIONBAR IS NOT A DESCENDANT OF
AVIEW
BLOG.PERPETUMDESIGN.COM/2011/08/
STRANGE-CASE-OF-DR-ACTION-AND-
MR-BAR.HTML
ACTIONBARSHERLOCK
ACTION BAR PLUS
PROBLEM ?
AB OCCUPIES ~10% OF SCREEN SPACE
FUNCTIONALITY OFTEN REDUCEDTO
BRANDING
FLY-OUT MENU:A FACEBOOK SOLUTION
NOT CONSISTENT WITHTHE REST OF
ACTIONBAR FUNCTIONALITY
ACTIONBAR PARTS
ACTIONBAR BEHAVIOR
Touch here shows
a menu with options
Touch here moves up in hierarchy
Touch here performs action
Touch here show a menu with options
Any extension should stay consistent with this
DON’T CONFUSEYOUR USERS
OWN APPS’D USE SOME UX FACELIFT
STILL WANT MORE FROMTHE
ACTIONBAR AREA ?
ACTION BAR PLUS
CUSTOM ACTIONBAR IMPLEMENTATION
EMBRACE EXTRA DIMENSION
TWOTYPES OF NAVIGATION
MAKE SURETHERE IS DEAD AREATO
SEPARATE FROM NOTIFICATION BAR
GESTURE
USE MIDDLE AS BONUS CONTENT
SUCH AS STUFF OUTSIDETHE APP
2D JUST ON OVERFLOW
ACTIONS ARE EITHERTOUCH
OR SWIPE DOWN
ACCESSTO HELP ON ACTIONS
EMBRACE MULTITOUCH
EASY SPLITVIEW FEATURE
BROADCASTTHE AVAILABLE SCREEN
actiwerks.intent.splitview
DESCRIPTION OFTHE INTENT APPEARS SOON ONTHE OPENINTENTS.ORG
BROADCAST DETAILS
private Intent splitIntent;
splitIntent = new Intent();
splitIntent.setAction("actiwerks.intent.splitview");
splitIntent.removeExtra("APP_SPLIT_SIZE");
splitIntent.putExtra("APP_SPLIT_SIZE", windowVerticalOffset);
getContext().sendBroadcast(splitIntent);
RECEIVETHE BROADCAST
<receiver android:name="AppSplitViewReceiver" >
<intent-filter>
<action android:name="actiwerks.intent.splitview" />
</intent-filter>
</receiver>
public class AppSplitViewReceiver extends BroadcastReceiver {
	 @Override
	 public void onReceive(Context context, Intent intent) {
	 	 if(intent.getAction() != null &&
intent.getAction().equals("actiwerks.intent.splitview")) {
	 	 	 int peekSize = intent.getIntExtra("APP_SPLIT_SIZE", -1);
	 	 	 // Handle the intent in the app, resize the window/layout accordingly
	 	 }
	 }
}
ACTIONBARPLUS INTHE GITHUB
FUN WITHTHE LISTVIEW
PROBLEM ?
ARRAYADAPTER API NOT DESIGNED
FOR GENERICVIEWGROUP
interface ViewAdapterBinder<T, V> {
public void bindViewToData(V view, T data);
}
public class ArrayViewGroupAdapter<T, V extends ViewGroup> extends ArrayAdapter<T>
BIND DATATOVIEW
public View getView(int position, View convertView, ViewGroup parent){
	 	
	 // assign the view we are converting to a local variable
	 V v = null;
	 try {
	 	 v = (V) convertView;
	 } catch(ClassCastException ccex) {}
// safe to ignore, keep null to force new instance to be created
	 // first check to see if the view is null. if so, we have to inflate it.
	 // to inflate it basically means to render, or show, the view.
	 if (v == null) {
	 	 v = getInstanceOfV();
	 }
	 T data = getItem(position);
	 if (data != null && binder != null) {
	 	 binder.bindViewToData(v, data);
	 } else {
	 	 // signal error here
	 	 prn.log("Can't bind data to view " + position);
	 }
	 // the view must be returned to our activity
	 return v;
}
private V getInstanceOfV() {
ParameterizedType superClass = (ParameterizedType)
getClass().getGenericSuperclass();
	 Class<V> type = (Class<V>) superClass.getActualTypeArguments()[1];
try {
return type.getDeclaredConstructor(Context.class).newInstance(getContext());
} catch (Exception ex) {
// Oops, no default constructor
throw new RuntimeException(ex);
}
}
public class SampleArrayAdapter extends ArrayViewGroupAdapter<SampleData, SampleListItem> {
	 public SampleArrayAdapter(Context context) {
	 	 super(context, new ArrayViewGroupAdapter.ViewAdapterBinder<SampleData, SampleListItem>() {
	 	 	
	 	 	 @Override
	 	 	 public void bindViewToData(SampleListItem view, SampleData data) {
	 	 	 	 view.setTitle(data.getTitle());
	 	 	 	 view.setDetails(data.getDetails());
	 	 	 }
	 	 	
	 	 });
	 }
}
ATYPE-SAFE, REFACTORING FRIENDLY
SOLUTION
ADVANTAGES FORTHE DEVELOPER AND
THE USER
INSTANT LISTS WITH INTROSPECTION
OBJECTFORMS.COM
FLEXIBLE LAYOUT ALLOWS RESIZING
PINCHTO ZOOM GESTURE IN LISTS
TIME AND DATE PICKER
PROBLEM ?
UNLIKE OTHER WIDGETS,
TIME & DATE PICKER NEEDS DIALOG
(OR PLENTY OF SPACE)
SOLUTION:
SPLIT EDITING INTO SPECIALIZED
TIME & DATE KEYBOARD
DIRECT MANIPULATION GESTURE
“KEYBOARD” FOR DATE SELECTION
NOTOUCH AT ALL
KINETIC GESTURES
SHAKE GESTURE
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake) {
[self showAlert];
}
}
//When a gesture is detected (and ended) the showAlert method is called.
-(IBAction)showAlert
{
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"ShakeGesture Demo"
message:@"Shake detected"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
AREATHAT IS NOT GETTINGTHE LOVE
IT DESERVERS
TIM BRAY : SENSPLORE
SENSOR FUSION
http://
www.youtube.com/
watch?
v=C7JQ7Rpwn2k
SAMSUNG GESTURES
HELP US SHAPETHE FUTURE
http://www.kineticgestures.org
TAKEWAY
Q & A
THANKYOU
PAVEL LAHODA
PAVEL@ACTIWERKS.COM
@PERPETUMDESIGN

Mais conteúdo relacionado

Mais procurados

Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Nir Kaufman
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2ang0123dev
 
Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Kirill Rozov
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2Chul Ju Hong
 
Everything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View ControllersEverything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View ControllersBrian Gesiak
 
Material Design and Backwards Compatibility
Material Design and Backwards CompatibilityMaterial Design and Backwards Compatibility
Material Design and Backwards CompatibilityAngelo Rüggeberg
 
知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tips知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tipsikeyat
 
Stay with React.js in 2020
Stay with React.js in 2020Stay with React.js in 2020
Stay with React.js in 2020Jerry Liao
 
Quick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental SetupQuick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental SetupBrian Gesiak
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Gabor Varadi
 
Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018Nir Kaufman
 
Deep Dive into React Hooks
Deep Dive into React HooksDeep Dive into React Hooks
Deep Dive into React HooksFelix Kühl
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andevMike Nakhimovich
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleMarcio Klepacz
 
Average- An android project
Average- An android projectAverage- An android project
Average- An android projectIpsit Dash
 
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo Ali Parmaksiz
 

Mais procurados (20)

What the fragments
What the fragmentsWhat the fragments
What the fragments
 
React lecture
React lectureReact lecture
React lecture
 
Firebase ng2 zurich
Firebase ng2 zurichFirebase ng2 zurich
Firebase ng2 zurich
 
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
 
Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2
 
Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2Тестирование на Android с Dagger 2
Тестирование на Android с Dagger 2
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2
 
Everything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View ControllersEverything You (N)ever Wanted to Know about Testing View Controllers
Everything You (N)ever Wanted to Know about Testing View Controllers
 
Material Design and Backwards Compatibility
Material Design and Backwards CompatibilityMaterial Design and Backwards Compatibility
Material Design and Backwards Compatibility
 
知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tips知っておきたいSpring Batch Tips
知っておきたいSpring Batch Tips
 
Stay with React.js in 2020
Stay with React.js in 2020Stay with React.js in 2020
Stay with React.js in 2020
 
Quick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental SetupQuick: Better Tests via Incremental Setup
Quick: Better Tests via Incremental Setup
 
Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)Architecting Single Activity Applications (With or Without Fragments)
Architecting Single Activity Applications (With or Without Fragments)
 
Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018Redux pattens - JSHeroes 2018
Redux pattens - JSHeroes 2018
 
Deep Dive into React Hooks
Deep Dive into React HooksDeep Dive into React Hooks
Deep Dive into React Hooks
 
Advanced Dagger talk from 360andev
Advanced Dagger talk from 360andevAdvanced Dagger talk from 360andev
Advanced Dagger talk from 360andev
 
Testing view controllers with Quick and Nimble
Testing view controllers with Quick and NimbleTesting view controllers with Quick and Nimble
Testing view controllers with Quick and Nimble
 
Average- An android project
Average- An android projectAverage- An android project
Average- An android project
 
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo A GWT Application with MVP Pattern Deploying to CloudFoundry using  Spring Roo
A GWT Application with MVP Pattern Deploying to CloudFoundry using Spring Roo
 

Destaque

Scandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar WistScandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar WistRussell Publishing
 
Top 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshareTop 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshareAnuj Kapoor
 
N miranda-aranda de duero
N miranda-aranda de dueroN miranda-aranda de duero
N miranda-aranda de duero099000151
 
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...CTom Hash
 
Imentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNERImentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNERMarieAudeMillet
 
Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)Institut Pasteur de Madagascar
 
Diagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défisDiagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défisInstitut Pasteur de Madagascar
 
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - waterBilling Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - waterERP - Billing & CRM
 
Lhervas aranda de duero
Lhervas aranda de dueroLhervas aranda de duero
Lhervas aranda de duero099000151
 
Single drama analysis missed
Single drama analysis missedSingle drama analysis missed
Single drama analysis missedLydia jill
 
Weekly jobs presentation oil & gas
Weekly jobs presentation   oil & gasWeekly jobs presentation   oil & gas
Weekly jobs presentation oil & gasRZ Group
 
Талица
ТалицаТалица
ТалицаURFU
 
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning ObjectDoceboElearningITA
 
козацький гарт
козацький гарткозацький гарт
козацький гартYury Fedorchenko
 

Destaque (19)

Scandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar WistScandinavian Rail Development 2013 - Bjarne Ivar Wist
Scandinavian Rail Development 2013 - Bjarne Ivar Wist
 
Top 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshareTop 5 myths about social learning forslideshare
Top 5 myths about social learning forslideshare
 
N miranda-aranda de duero
N miranda-aranda de dueroN miranda-aranda de duero
N miranda-aranda de duero
 
Diseminación de rea rmb
Diseminación de rea rmbDiseminación de rea rmb
Diseminación de rea rmb
 
Pendapatan nasional
Pendapatan nasionalPendapatan nasional
Pendapatan nasional
 
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
Rajaram et al. 2013. EST-SSRs and consensus map. BMC Genomics, doi 1471-2164-...
 
Imentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNERImentra conseil - Offre IMMO-PLANNER
Imentra conseil - Offre IMMO-PLANNER
 
Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)Introduction des systèmes d'information géographiques (SIG)
Introduction des systèmes d'information géographiques (SIG)
 
Diseminación de rea rmb
Diseminación de rea rmbDiseminación de rea rmb
Diseminación de rea rmb
 
5rugyiu
5rugyiu5rugyiu
5rugyiu
 
Diagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défisDiagnostic parasitologique des accès palustres: acquis et défis
Diagnostic parasitologique des accès palustres: acquis et défis
 
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - waterBilling Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
Billing Fatturazione Incassi - EBC360 utility -all in one- energy.gas - water
 
Lhervas aranda de duero
Lhervas aranda de dueroLhervas aranda de duero
Lhervas aranda de duero
 
Single drama analysis missed
Single drama analysis missedSingle drama analysis missed
Single drama analysis missed
 
Weekly jobs presentation oil & gas
Weekly jobs presentation   oil & gasWeekly jobs presentation   oil & gas
Weekly jobs presentation oil & gas
 
Талица
ТалицаТалица
Талица
 
Buddies 2013
Buddies 2013Buddies 2013
Buddies 2013
 
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
4 - Come usare Storyline con Docebo: caricare in LMS un Learning Object
 
козацький гарт
козацький гарткозацький гарт
козацький гарт
 

Semelhante a Improving Android Experience for Users and Developers

Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best PracticesYekmer Simsek
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Alfredo Morresi
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Robert DeLuca
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureAlexey Buzdin
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android InfrastructureC.T.Co
 
Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stackTomáš Kypta
 
Thomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-finalThomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-finalDroidcon Berlin
 
That’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your BatteryThat’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your BatteryMichael Galpin
 
Reliable Javascript
Reliable Javascript Reliable Javascript
Reliable Javascript Glenn Stovall
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScriptAndrew Dupont
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesMichael Galpin
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Paco de la Cruz
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotationjavatwo2011
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinXamarin
 

Semelhante a Improving Android Experience for Users and Developers (20)

Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
 
Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)Slightly Advanced Android Wear ;)
Slightly Advanced Android Wear ;)
 
Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React Crossing platforms with JavaScript & React
Crossing platforms with JavaScript & React
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Overview of Android Infrastructure
Overview of Android InfrastructureOverview of Android Infrastructure
Overview of Android Infrastructure
 
Android 3
Android 3Android 3
Android 3
 
Modern Android app library stack
Modern Android app library stackModern Android app library stack
Modern Android app library stack
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
Backendless apps
Backendless appsBackendless apps
Backendless apps
 
Thomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-finalThomas braun dependency-injection_with_robo_guice-presentation-final
Thomas braun dependency-injection_with_robo_guice-presentation-final
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
That’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your BatteryThat’s My App - Running in Your Background - Draining Your Battery
That’s My App - Running in Your Background - Draining Your Battery
 
Reliable Javascript
Reliable Javascript Reliable Javascript
Reliable Javascript
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Design Patterns for Tablets and Smartphones
Design Patterns for Tablets and SmartphonesDesign Patterns for Tablets and Smartphones
Design Patterns for Tablets and Smartphones
 
Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)Durable functions 2.0 (2019-10-10)
Durable functions 2.0 (2019-10-10)
 
Introduction toandroid
Introduction toandroidIntroduction toandroid
Introduction toandroid
 
比XML更好用的Java Annotation
比XML更好用的Java Annotation比XML更好用的Java Annotation
比XML更好用的Java Annotation
 
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for XamarinGet the Most Out of iOS 11 with Visual Studio Tools for Xamarin
Get the Most Out of iOS 11 with Visual Studio Tools for Xamarin
 

Último

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Último (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

Improving Android Experience for Users and Developers