SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Downloaden Sie, um offline zu lesen
Supporting Multiple
Android Device Definitions
Chiu-Ki Chan
@chiuki
bit.ly/muland
@chiuki@chiuki
So many devices!
@chiuki@chiuki
Infinite screen sizes!
@chiuki@chiuki
Responsive
+
Progressive
Hello World
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
@chiuki
Declarative Layout
@chiuki
@chiuki
@chiuki
(x,y)
@chiuki
(x,y)
@chiuki
Center
@chiuki@chiuki
Center
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/start" />
@chiuki
@chiuki@chiuki
Proportional Layout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/image2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki
@chiuki
Divider
@chiuki@chiuki
Divider
<LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki@chiuki
Divider
<LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black" />
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
@chiuki
dp
@chiuki
dpDensity-independent pixel
@chiuki
@chiuki
@chiuki@chiuki
res/layout-land
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/image1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<ImageView
android:id="@+id/image2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
@chiuki
Resource Folders
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/layout-land/activity_main.xml
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-hdpi/ic_launcher.png
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
res/drawable-large-land/splash.png
@chiuki
res/drawable-large-land/splash.png
@chiuki
res/drawable/splash.xml
@chiuki
res/drawable/splash.xml
XML drawable
@chiuki@chiuki
XML shape
<shape android:shape="rectangle" >
<gradient
android:startColor="#063"
android:endColor="#030"
android:angle="270" />
</shape>
@chiuki@chiuki
Gradient
@chiuki@chiuki
Gradient
@chiuki@chiuki
Pattern
@chiuki@chiuki
Tiles
@chiuki@chiuki
Tiles
@chiuki@chiuki
Tiling background
<bitmap
android:src="@drawable/tile"
android:tileMode="repeat"
android:dither="true" />
res/drawable/background.xml
@chiuki@chiuki
<bitmap
android:src="@drawable/tile"
android:tileMode="repeat"
android:dither="true" />
res/drawable/background.xml
tile.png
Tiling background
@chiuki@chiuki
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background" />
res/layout/activity_main.xml
res/drawable/background.xml
Tiling background
@chiuki@chiuki
Tile mode
clamp
Replicates the edge color
repeat
Repeats the bitmap in both direction
mirror
Repeats with alternating mirror images
@chiuki@chiuki
GridView
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
Auto fit columns
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="auto_fit"
android:columnWidth="@dimen/workbook_column_width"
android:padding="@dimen/workbook_padding"
android:horizontalSpacing="@dimen/workbook_spacing"
android:verticalSpacing="@dimen/workbook_spacing"
android:scrollbarStyle="outsideOverlay" />
@chiuki@chiuki
<resources>
<dimen name="workbook_padding">8dp</dimen>
<dimen name="workbook_spacing">12dp</dimen>
<dimen name="workbook_column_width">120dp</dimen>
<resources>
res/values/dimens.xml
values/dimen.xml
@chiuki@chiuki
values-large/dimen.xml
<resources>
<dimen name="workbook_padding">32dp</dimen>
<dimen name="workbook_spacing">18dp</dimen>
<dimen name="workbook_column_width">180dp</dimen>
<resources>
res/values-large/dimens.xml
@chiuki@chiuki
7-inch
@chiuki@chiuki
Phone
@chiuki@chiuki
Fragments
github.com/codepath/android-master-detail-demo
Progressive
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Resource Folders
Type Variation
layout
values
drawable
menu
Language & Region: en, fr, fr-rCA
Screen size: small, large, xlarge, sw320dp, h720dp
Screen orientation: port, land
Screen density: ldpi, mdpi, hdpi, xhdpi, nodpi, tvdpi
Platform version: v4, v11, v14, v21
UI mode: car, desk, television, appliance
http://developer.android.com/guide/topics/resources/providing-resources.html
@chiuki@chiuki
Ripples
@chiuki@chiuki
Ripples
@chiuki@chiuki
drawable-v21
<ripple android:color="@color/colorAccent">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary" />
</shape>
</item>
</ripple>
res/drawable-v21/background.xml
@chiuki@chiuki
drawable as default
<selector>
<item android:state_pressed="true"
android:drawable="@color/colorAccent" />
<item android:drawable="@color/colorPrimary" />
</selector>
res/drawable/background.xml
@chiuki@chiuki
android:background
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="drawable/background"
android:text="@string/click_me" />
@chiuki@chiuki
Progressive
@chiuki@chiuki
API level
@chiuki@chiuki
Detect API level
android.os.Build.VERSION.SDK_INT
@chiuki@chiuki
// Default value
int heapSize = 16;
// Detect OS version
int sdk = Integer.parseInt(Build.VERSION.SDK_INT);
// Progressive enhancement for newer devices
if (sdk >= Build.VERSION_CODES_ECLAIR) {
heapSize = getHeapSize(this);
}
Progressive
@chiuki@chiuki
getHeapSize
public int getHeapSize() {
ActivityManager activityManager = (ActivityManager)
getSystemService(Context.ACTIVITY_SERVICE);
return activityManager.getMemoryClass();
}
@chiuki@chiuki
Ship new functionality with your app!
Support Library
@chiuki
Support Library
Fragment
TaskStackBuilder
LruCache
ViewPager
DrawerLayout
SlidingPaneLayout
Loader
AppCompat
VectorDrawable
RecyclerView
@chiuki
AppCompat
Material Design
@chiuki
Support library only
RecyclerView
Summary
@chiuki@chiuki
Summary
Responsive layout
Declarative layout
Density-independent pixels (dp)
Resource folders
XML drawables
Progressive functionality
Resource folders
Version check
Support library
Slides
bit.ly/muland
@chiuki@chiuki
Thank you!
Learn more
developer.android.com/training/multiscreen
is.gd/FluidAndroidLayouts
is.gd/BeautifulAndroid
pluralsight.com/authors/chiuki-chan
Stay in touch
tinyletter.com/sqisland
blog.sqisland.com
twitter.com/chiuki
Slides
bit.ly/muland
@chiuki@chiuki
@chiuki@chiuki
360|AnDev Core Track
• Activities in the Wild: Exploring the Activity
Lifecycle
• Fragments: What are they good for
• Async Task, Threads, Pools and Executors
• Measure, Layout, Draw, Repeat: Custom Views
and ViewGroups
• A Practical Guide to Material Design
implementation for Android Developers
• Libraries I wish I knew about when I started
• Intro to iOS for Android developers
@chiuki@chiuki
Discount Code:
DroidCommunity

Weitere ähnliche Inhalte

Mehr von Chiu-Ki Chan

Yes, you can draw with your engineering brain
Yes, you can draw with your engineering brainYes, you can draw with your engineering brain
Yes, you can draw with your engineering brainChiu-Ki Chan
 
How to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectHow to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectChiu-Ki Chan
 
how-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodehow-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodeChiu-Ki Chan
 
How to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinHow to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinChiu-Ki Chan
 
How to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonHow to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonChiu-Ki Chan
 
How to Write a Conference Proposal
How to Write a Conference ProposalHow to Write a Conference Proposal
How to Write a Conference ProposalChiu-Ki Chan
 
How to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitHow to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitChiu-Ki Chan
 
Intro to Android for iOS developers
Intro to Android for iOS developersIntro to Android for iOS developers
Intro to Android for iOS developersChiu-Ki Chan
 
Hands-on Icon creation
Hands-on Icon creationHands-on Icon creation
Hands-on Icon creationChiu-Ki Chan
 
Develop your voice
Develop your voiceDevelop your voice
Develop your voiceChiu-Ki Chan
 
How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012Chiu-Ki Chan
 
I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012Chiu-Ki Chan
 

Mehr von Chiu-Ki Chan (12)

Yes, you can draw with your engineering brain
Yes, you can draw with your engineering brainYes, you can draw with your engineering brain
Yes, you can draw with your engineering brain
 
How to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code ConnectHow to be an Android Expert: Women Who Code Connect
How to be an Android Expert: Women Who Code Connect
 
how-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcodehow-to-be-an-android-expert-wwcode
how-to-be-an-android-expert-wwcode
 
How to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon BerlinHow to be an Android Expert: Droidcon Berlin
How to be an Android Expert: Droidcon Berlin
 
How to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon BostonHow to be an Android Expert: Droidcon Boston
How to be an Android Expert: Droidcon Boston
 
How to Write a Conference Proposal
How to Write a Conference ProposalHow to Write a Conference Proposal
How to Write a Conference Proposal
 
How to be an Android Expert: Android Summit
How to be an Android Expert: Android SummitHow to be an Android Expert: Android Summit
How to be an Android Expert: Android Summit
 
Intro to Android for iOS developers
Intro to Android for iOS developersIntro to Android for iOS developers
Intro to Android for iOS developers
 
Hands-on Icon creation
Hands-on Icon creationHands-on Icon creation
Hands-on Icon creation
 
Develop your voice
Develop your voiceDevelop your voice
Develop your voice
 
How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012How to win hackathons, Ignite Google I/O 2012
How to win hackathons, Ignite Google I/O 2012
 
I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012I have nothing to say, Ignite Where 2012
I have nothing to say, Ignite Where 2012
 

Kürzlich hochgeladen

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 

Kürzlich hochgeladen (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 

Supporting Multiple Android Device Definitions