├── docs ├── images │ ├── SwipeCardView_Android_ColorsPage.gif │ ├── SwipeCardView_Android_SimplePage.png │ ├── SwipeCardView_Android_TinderPage.png │ ├── SwipeCardView_Android_CardRotation.gif │ ├── SwipeCardView_Android_AnimationLength.gif │ ├── SwipeCardView_Android_BackCardScale.gif │ ├── SwipeCardView_Android_TinderPageLike.png │ ├── SwipeCardView_Android_TinderPageLikeM.jpg │ ├── SwipeCardView_Android_TinderPageNope.png │ ├── SwipeCardView_Android_TinderPageNopeM.jpg │ ├── SwipeCardView_Android_TinderPage_Down.gif │ ├── SwipeCardView_Android_TinderPage_Full.gif │ ├── SwipeCardView_Android_TinderPage_Like.gif │ ├── SwipeCardView_Android_TinderPage_Nope.gif │ ├── SwipeCardView_Android_CustomizablePage.png │ ├── SwipeCardView_Android_TinderPageSuperLike.png │ ├── SwipeCardView_Android_TinderPageSuperLikeM.jpg │ └── SwipeCardView_Android_TinderPage_SuperLike.gif ├── changelog.md ├── api.md └── index.md ├── src ├── SwipeCardView.Sample │ ├── SwipeCardView.Sample.iOS │ │ ├── Resources │ │ │ ├── Default.png │ │ │ ├── p327144.jpg │ │ │ ├── p378674.jpg │ │ │ ├── p398931.jpg │ │ │ ├── p401107.jpg │ │ │ ├── p453095.jpg │ │ │ ├── p458914.jpg │ │ │ ├── p467499.jpg │ │ │ ├── p474893.jpg │ │ │ ├── p497489.jpg │ │ │ ├── p503001.jpg │ │ │ ├── p589739.jpg │ │ │ ├── p597956.jpg │ │ │ ├── p627958.jpg │ │ │ ├── p705193.jpg │ │ │ ├── p731150.jpg │ │ │ ├── Default@2x.png │ │ │ ├── Default-568h@2x.png │ │ │ ├── Default-Portrait.png │ │ │ ├── Default-Portrait@2x.png │ │ │ ├── ic_tinder_like@2x.png │ │ │ ├── ic_tinder_like@3x.png │ │ │ ├── ic_tinder_nope@2x.png │ │ │ ├── ic_tinder_nope@3x.png │ │ │ ├── ic_tinder_superlike@2x.png │ │ │ ├── ic_tinder_superlike@3x.png │ │ │ └── LaunchScreen.storyboard │ │ ├── Assets.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ ├── Icon20.png │ │ │ │ ├── Icon29.png │ │ │ │ ├── Icon40.png │ │ │ │ ├── Icon58.png │ │ │ │ ├── Icon60.png │ │ │ │ ├── Icon76.png │ │ │ │ ├── Icon80.png │ │ │ │ ├── Icon87.png │ │ │ │ ├── Icon1024.png │ │ │ │ ├── Icon120.png │ │ │ │ ├── Icon152.png │ │ │ │ ├── Icon167.png │ │ │ │ ├── Icon180.png │ │ │ │ └── Contents.json │ │ ├── Entitlements.plist │ │ ├── Main.cs │ │ ├── AppDelegate.cs │ │ ├── Info.plist │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── SwipeCardView.Sample.iOS.csproj │ ├── SwipeCardView.Sample │ │ ├── Model │ │ │ ├── Gender.cs │ │ │ └── Profile.cs │ │ ├── App.xaml │ │ ├── View │ │ │ ├── MainPage.xaml.cs │ │ │ ├── SimplePage.xaml.cs │ │ │ ├── CustomizablePage.xaml.cs │ │ │ ├── Misc │ │ │ │ ├── EmptyPage.xaml.cs │ │ │ │ ├── ListPage.xaml.cs │ │ │ │ ├── TemplateSelectorPage.xaml.cs │ │ │ │ ├── EmptyPage.xaml │ │ │ │ ├── ListPage.xaml │ │ │ │ └── TemplateSelectorPage.xaml │ │ │ ├── MiscContainerPage.xaml.cs │ │ │ ├── MiscContainerPage.xaml │ │ │ ├── MainPage.xaml │ │ │ ├── SimplePage.xaml │ │ │ ├── ColorsPage.xaml │ │ │ ├── ColorsPage.xaml.cs │ │ │ ├── TinderPage.xaml.cs │ │ │ ├── TinderPage.xaml │ │ │ └── CustomizablePage.xaml │ │ ├── ViewModel │ │ │ ├── BaseViewModel.cs │ │ │ ├── MainPageViewModel.cs │ │ │ ├── SimplePageViewModel.cs │ │ │ ├── ColorsPageViewModel.cs │ │ │ ├── TinderPageViewModel.cs │ │ │ └── CustomizablePageViewModel.cs │ │ ├── App.xaml.cs │ │ ├── DataTemplateSelectors │ │ │ └── GenderDataTemplateSelector.cs │ │ └── SwipeCardView.Sample.csproj │ └── SwipeCardView.Sample.Android │ │ ├── Resources │ │ ├── drawable │ │ │ ├── marko.jpg │ │ │ ├── p327144.jpg │ │ │ ├── p378674.jpg │ │ │ ├── p398931.jpg │ │ │ ├── p401107.jpg │ │ │ ├── p453095.jpg │ │ │ ├── p458914.jpg │ │ │ ├── p467499.jpg │ │ │ ├── p474893.jpg │ │ │ ├── p497489.jpg │ │ │ ├── p503001.jpg │ │ │ ├── p589739.jpg │ │ │ ├── p597956.jpg │ │ │ ├── p627958.jpg │ │ │ ├── p705193.jpg │ │ │ └── p731150.jpg │ │ ├── mipmap-hdpi │ │ │ ├── Icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-mdpi │ │ │ ├── Icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ │ ├── Icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ │ ├── Icon.png │ │ │ └── launcher_foreground.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── Icon.png │ │ │ └── launcher_foreground.png │ │ ├── drawable-hdpi │ │ │ ├── ic_tinder_like.png │ │ │ ├── ic_tinder_nope.png │ │ │ └── ic_tinder_superlike.png │ │ ├── drawable-mdpi │ │ │ ├── ic_tinder_like.png │ │ │ ├── ic_tinder_nope.png │ │ │ └── ic_tinder_superlike.png │ │ ├── drawable-xhdpi │ │ │ ├── ic_tinder_like.png │ │ │ ├── ic_tinder_nope.png │ │ │ └── ic_tinder_superlike.png │ │ ├── drawable-xxhdpi │ │ │ ├── ic_tinder_like.png │ │ │ ├── ic_tinder_nope.png │ │ │ └── ic_tinder_superlike.png │ │ ├── drawable-xxxhdpi │ │ │ ├── ic_tinder_like.png │ │ │ ├── ic_tinder_nope.png │ │ │ └── ic_tinder_superlike.png │ │ ├── mipmap-anydpi-v26 │ │ │ ├── icon.xml │ │ │ └── icon_round.xml │ │ ├── values │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── layout │ │ │ ├── Toolbar.axml │ │ │ └── Tabbar.axml │ │ └── AboutResources.txt │ │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ │ ├── Assets │ │ └── AboutAssets.txt │ │ ├── MainActivity.cs │ │ └── SwipeCardView.Sample.Android.csproj ├── MLToolkit.Forms.SwipeCardView │ ├── Core │ │ ├── SwipeCardDirection.cs │ │ ├── DraggingCardPosition.cs │ │ ├── SwipedCardEventArgs.cs │ │ └── DraggingCardEventArgs.cs │ └── MLToolkit.Forms.SwipeCardView.csproj ├── MLToolkit.Forms.SwipeCardView.Tests │ ├── MLToolkit.Forms.SwipeCardView.Tests.csproj │ ├── MockViewModel.cs │ ├── TestBase.cs │ ├── UnitTests.cs │ └── MockPlatformServices.cs └── MLToolkit.Forms.SwipeCardView.sln ├── LICENCE.md ├── .gitignore └── README.md /docs/images/SwipeCardView_Android_ColorsPage.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_ColorsPage.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_SimplePage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_SimplePage.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_CardRotation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_CardRotation.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_AnimationLength.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_AnimationLength.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_BackCardScale.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_BackCardScale.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageLike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageLike.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageLikeM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageLikeM.jpg -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageNope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageNope.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageNopeM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageNopeM.jpg -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage_Down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage_Down.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage_Full.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage_Full.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage_Like.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage_Like.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage_Nope.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage_Nope.gif -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_CustomizablePage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_CustomizablePage.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageSuperLike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageSuperLike.png -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPageSuperLikeM.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPageSuperLikeM.jpg -------------------------------------------------------------------------------- /docs/images/SwipeCardView_Android_TinderPage_SuperLike.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/docs/images/SwipeCardView_Android_TinderPage_SuperLike.gif -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p327144.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p327144.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p378674.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p378674.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p398931.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p398931.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p401107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p401107.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p453095.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p453095.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p458914.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p458914.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p467499.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p467499.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p474893.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p474893.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p497489.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p497489.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p503001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p503001.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p589739.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p589739.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p597956.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p597956.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p627958.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p627958.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p705193.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p705193.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p731150.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/p731150.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/Model/Gender.cs: -------------------------------------------------------------------------------- 1 | namespace SwipeCardView.Sample.Model 2 | { 3 | public enum Gender 4 | { 5 | Female = 1, 6 | 7 | Male = 2 8 | } 9 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-Portrait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-Portrait.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/marko.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/marko.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-Portrait@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/Default-Portrait@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_like@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_like@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_like@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_like@3x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_nope@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_nope@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_nope@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_nope@3x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p327144.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p327144.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p378674.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p378674.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p398931.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p398931.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p401107.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p401107.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p453095.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p453095.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p458914.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p458914.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p467499.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p467499.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p474893.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p474893.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p497489.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p497489.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p503001.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p503001.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p589739.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p589739.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p597956.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p597956.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p627958.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p627958.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p705193.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p705193.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p731150.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable/p731150.jpg -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-hdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-hdpi/Icon.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-mdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-mdpi/Icon.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xhdpi/Icon.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxhdpi/Icon.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxxhdpi/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxxhdpi/Icon.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_superlike@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_superlike@2x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_superlike@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/ic_tinder_superlike@3x.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_like.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_nope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_nope.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_like.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_nope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_nope.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_like.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_nope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_nope.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_like.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_nope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_nope.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_like.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_nope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_nope.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-hdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-hdpi/launcher_foreground.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-mdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-mdpi/launcher_foreground.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_superlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-hdpi/ic_tinder_superlike.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_superlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-mdpi/ic_tinder_superlike.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_superlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xhdpi/ic_tinder_superlike.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_superlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxhdpi/ic_tinder_superlike.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_superlike.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markolazic88/SwipeCardView/HEAD/src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/drawable-xxxhdpi/ic_tinder_superlike.png -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-anydpi-v26/icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | #3F51B5 5 | #303F9F 6 | #FF4081 7 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/mipmap-anydpi-v26/icon_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/Model/Profile.cs: -------------------------------------------------------------------------------- 1 | namespace SwipeCardView.Sample.Model 2 | { 3 | public class Profile 4 | { 5 | public int ProfileId { get; set; } 6 | 7 | public string Name { get; set; } 8 | 9 | public int Age { get; set; } 10 | 11 | public Gender Gender { get; set; } 12 | 13 | public string Photo { get; set; } 14 | } 15 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using SwipeCardView.Sample.ViewModel; 2 | using Xamarin.Forms; 3 | 4 | namespace SwipeCardView.Sample.View 5 | { 6 | public partial class MainPage : ContentPage 7 | { 8 | public MainPage() 9 | { 10 | InitializeComponent(); 11 | BindingContext = new MainPageViewModel(Navigation); 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/layout/Toolbar.axml: -------------------------------------------------------------------------------- 1 | 9 | 10 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/SimplePage.xaml.cs: -------------------------------------------------------------------------------- 1 | using SwipeCardView.Sample.ViewModel; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Xaml; 4 | 5 | namespace SwipeCardView.Sample.View 6 | { 7 | [XamlCompilation(XamlCompilationOptions.Compile)] 8 | public partial class SimplePage : ContentPage 9 | { 10 | public SimplePage() 11 | { 12 | InitializeComponent(); 13 | BindingContext = new SimplePageViewModel(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace SwipeCardView.Sample.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | private static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, "AppDelegate"); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/ViewModel/BaseViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.ComponentModel; 2 | using System.Runtime.CompilerServices; 3 | 4 | namespace SwipeCardView.Sample.ViewModel 5 | { 6 | public abstract class BasePageViewModel : INotifyPropertyChanged 7 | { 8 | public event PropertyChangedEventHandler PropertyChanged; 9 | 10 | protected void RaisePropertyChanged([CallerMemberName] string name = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); 11 | } 12 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/CustomizablePage.xaml.cs: -------------------------------------------------------------------------------- 1 | using SwipeCardView.Sample.ViewModel; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Xaml; 4 | 5 | namespace SwipeCardView.Sample.View 6 | { 7 | [XamlCompilation(XamlCompilationOptions.Compile)] 8 | public partial class CustomizablePage : ContentPage 9 | { 10 | public CustomizablePage() 11 | { 12 | InitializeComponent(); 13 | BindingContext = new CustomizablePageViewModel(); 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/EmptyPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace SwipeCardView.Sample.View.Misc 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class EmptyPage : ContentPage 14 | { 15 | public EmptyPage() 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/MiscContainerPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace SwipeCardView.Sample.View 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class MiscContainerPage : TabbedPage 14 | { 15 | public MiscContainerPage() 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/layout/Tabbar.axml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/ListPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Xaml; 4 | 5 | namespace SwipeCardView.Sample.View.Misc 6 | { 7 | [XamlCompilation(XamlCompilationOptions.Compile)] 8 | public partial class ListPage : ContentPage 9 | { 10 | public ListPage() 11 | { 12 | InitializeComponent(); 13 | 14 | SwipeCardView.ItemsSource = new List() 15 | { 16 | "Baboon", 17 | "Capuchin Monkey", 18 | "Blue Monkey" 19 | }; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView/Core/SwipeCardDirection.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MLToolkit.Forms.SwipeCardView.Core 4 | { 5 | /// Enumerates swipe directions. 6 | [Flags] 7 | public enum SwipeCardDirection 8 | { 9 | /// Indicates an unknown direction. 10 | None = 0, 11 | 12 | /// Indicates a rightward swipe. 13 | Right = 1, 14 | 15 | /// Indicates a leftward swipe. 16 | Left = 2, 17 | 18 | /// Indicates an upward swipe. 19 | Up = 4, 20 | 21 | /// Indicates a downward swipe. 22 | Down = 8, 23 | } 24 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Activity 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView.Tests/MLToolkit.Forms.SwipeCardView.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netcoreapp3.1 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView/Core/DraggingCardPosition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace MLToolkit.Forms.SwipeCardView.Core 4 | { 5 | /// Enumerates dragging directions. 6 | [Flags] 7 | public enum DraggingCardPosition 8 | { 9 | /// Indicates a starting position. 10 | Start = 0, 11 | 12 | /// Indicates a position under threshold. 13 | UnderThreshold = 1, 14 | 15 | /// Indicates a position over threshold. 16 | OverThreshold = 2, 17 | 18 | /// Indicates an ending position under threshold. 19 | FinishedUnderThreshold = 4, 20 | 21 | /// Indicates an ending position over threshold. 22 | FinishedOverThreshold = 8 23 | } 24 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/ViewModel/MainPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | using Xamarin.Forms; 4 | 5 | namespace SwipeCardView.Sample.ViewModel 6 | { 7 | public class MainPageViewModel : BasePageViewModel 8 | { 9 | public MainPageViewModel(INavigation navigation) 10 | { 11 | Navigation = navigation; 12 | 13 | NavigateCommand = new Command(OnNavigateCommand); 14 | } 15 | 16 | public ICommand NavigateCommand { get; private set; } 17 | private INavigation Navigation { get; set; } 18 | 19 | private async void OnNavigateCommand(Type pageType) 20 | { 21 | Page page = (Page)Activator.CreateInstance(pageType); 22 | await Navigation.PushAsync(page); 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/TemplateSelectorPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using SwipeCardView.Sample.Model; 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace SwipeCardView.Sample.View.Misc 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class TemplateSelectorPage : ContentPage 14 | { 15 | public TemplateSelectorPage() 16 | { 17 | InitializeComponent(); 18 | 19 | SwipeCardView.ItemsSource = new List() 20 | { 21 | Gender.Male, 22 | Gender.Female, 23 | Gender.Male, 24 | Gender.Female 25 | }; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView/Core/SwipedCardEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MLToolkit.Forms.SwipeCardView.Core 2 | { 3 | /// Arguments for swipe events. 4 | public class SwipedCardEventArgs : System.EventArgs 5 | { 6 | public SwipedCardEventArgs(object item, object parameter, SwipeCardDirection direction) 7 | { 8 | Item = item; 9 | Parameter = parameter; 10 | Direction = direction; 11 | } 12 | 13 | /// Gets the item parameter. 14 | public object Item { get; private set; } 15 | 16 | /// Gets the command parameter. 17 | public object Parameter { get; private set; } 18 | 19 | /// Gets the direction of the swipe. 20 | public SwipeCardDirection Direction { get; private set; } 21 | } 22 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using SwipeCardView.Sample.View; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Xaml; 4 | 5 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)] 6 | 7 | namespace SwipeCardView.Sample 8 | { 9 | public partial class App : Application 10 | { 11 | public static double ScreenHeight; 12 | public static double ScreenWidth; 13 | 14 | public App() 15 | { 16 | InitializeComponent(); 17 | 18 | MainPage = new NavigationPage(new MainPage()); 19 | } 20 | 21 | protected override void OnStart() 22 | { 23 | // Handle when your app starts 24 | } 25 | 26 | protected override void OnSleep() 27 | { 28 | // Handle when your app sleeps 29 | } 30 | 31 | protected override void OnResume() 32 | { 33 | // Handle when your app resumes 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/MiscContainerPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView.Tests/MockViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Runtime.CompilerServices; 5 | using System.Text; 6 | 7 | namespace MLToolkit.Forms.SwipeCardView.Tests 8 | { 9 | class MockViewModel : INotifyPropertyChanged 10 | { 11 | public event PropertyChangedEventHandler PropertyChanged; 12 | 13 | public MockViewModel(string text=null) 14 | { 15 | _text = text; 16 | } 17 | 18 | string _text; 19 | public virtual string Text { 20 | get { return _text; } 21 | set { 22 | if (_text == value) 23 | return; 24 | 25 | _text = value; 26 | OnPropertyChanged ("Text"); 27 | } 28 | } 29 | 30 | protected void OnPropertyChanged ([CallerMemberName] string propertyName = null) 31 | { 32 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs (propertyName)); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /LICENCE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2017 Marko Lazic 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/DataTemplateSelectors/GenderDataTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using SwipeCardView.Sample.Model; 5 | using Xamarin.Forms; 6 | 7 | namespace SwipeCardView.Sample.DataTemplateSelectors 8 | { 9 | public class GenderDataTemplateSelector : DataTemplateSelector 10 | { 11 | public DataTemplate MaleDataTemplate { get; set; } 12 | 13 | public DataTemplate FemaleDataTemplate { get; set; } 14 | 15 | public DataTemplate DefautlDataTemplate { get; set; } 16 | 17 | protected override DataTemplate OnSelectTemplate(object item, BindableObject container) 18 | { 19 | if (item is Gender gender) 20 | { 21 | switch (gender) 22 | { 23 | case Gender.Female: 24 | return MaleDataTemplate; 25 | case Gender.Male: 26 | return FemaleDataTemplate; 27 | } 28 | } 29 | 30 | return DefautlDataTemplate; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView.Tests/TestBase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Text; 5 | using Microsoft.VisualStudio.TestTools.UnitTesting; 6 | using Xamarin.Forms; 7 | 8 | namespace MLToolkit.Forms.SwipeCardView.Tests 9 | { 10 | [TestClass] 11 | public abstract class TestBase 12 | { 13 | CultureInfo _defaultCulture; 14 | CultureInfo _defaultUICulture; 15 | 16 | [TestInitialize] 17 | public void Initialize() 18 | { 19 | _defaultCulture = System.Threading.Thread.CurrentThread.CurrentCulture; 20 | _defaultUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture; 21 | Device.PlatformServices = new MockPlatformServices(); 22 | } 23 | 24 | [TestCleanup] 25 | public void Cleanup() 26 | { 27 | Device.PlatformServices = null; 28 | System.Threading.Thread.CurrentThread.CurrentCulture = _defaultCulture; 29 | System.Threading.Thread.CurrentThread.CurrentUICulture = _defaultUICulture; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/MainPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView/MLToolkit.Forms.SwipeCardView.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | MLToolkit.Forms.SwipeCardView 6 | 1.0.0.0 7 | $(BUILD_BUILDNUMBER) 8 | Marko Lazic 9 | Marko Lazic 10 | https://github.com/markolazic88/SwipeCardView 11 | MIT 12 | xamarin xamarin.forms android ios swipe card view mltoolkit tinder 13 | SwipeCardView is a lightweight MVVM friendly user control that brings Tinder-style swipe card view into Xamarin.Forms applications. 14 | Copyright 2020 15 | https://github.com/markolazic88/SwipeCardView 16 | https://github.com/markolazic88/SwipeCardView/blob/master/docs/changelog.md 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Content.PM; 3 | using Android.OS; 4 | using Xamarin.Forms; 5 | 6 | namespace SwipeCardView.Sample.Droid 7 | { 8 | [Activity(Label = "SwipeCardView.Sample", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation, ScreenOrientation = ScreenOrientation.Portrait)] 9 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 10 | { 11 | protected override void OnCreate(Bundle bundle) 12 | { 13 | TabLayoutResource = Resource.Layout.Tabbar; 14 | ToolbarResource = Resource.Layout.Toolbar; 15 | 16 | base.OnCreate(bundle); 17 | 18 | Forms.SetFlags("CollectionView_Experimental"); 19 | Forms.SetFlags("CarouselView_Experimental"); 20 | Forms.Init(this, bundle); 21 | 22 | var width = Resources.DisplayMetrics.WidthPixels; 23 | var height = Resources.DisplayMetrics.HeightPixels; 24 | var density = Resources.DisplayMetrics.Density; 25 | 26 | App.ScreenWidth = (width - 0.5f) / density; 27 | App.ScreenHeight = (height - 0.5f) / density; 28 | 29 | LoadApplication(new App()); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/EmptyPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/ListPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using System.Reflection; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SwipeCardView.Sample.Android")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("SwipeCardView.Sample.Android")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | [assembly: ComVisible(false)] 17 | 18 | // Version information for an assembly consists of the following four values: 19 | // 20 | // Major Version 21 | // Minor Version 22 | // Build Number 23 | // Revision 24 | // 25 | // You can specify all the values or you can default the Build and Revision Numbers 26 | // by using the '*' as shown below: 27 | // [assembly: AssemblyVersion("1.0.*")] 28 | [assembly: AssemblyVersion("1.0.0.0")] 29 | [assembly: AssemblyFileVersion("1.0.0.0")] 30 | 31 | // Add some common permissions, these can be removed if not needed 32 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)] 33 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | using Xamarin.Forms; 4 | 5 | namespace SwipeCardView.Sample.iOS 6 | { 7 | // The UIApplicationDelegate for the application. This class is responsible for launching the 8 | // User Interface of the application, as well as listening (and optionally responding) to 9 | // application events from iOS. 10 | [Register("AppDelegate")] 11 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 12 | { 13 | // 14 | // This method is invoked when the application has loaded and is ready to run. In this 15 | // method you should instantiate the window, load the UI into it and then make the window 16 | // visible. 17 | // 18 | // You have 17 seconds to return from this method, or iOS will terminate your application. 19 | // 20 | public override bool FinishedLaunching(UIApplication app, NSDictionary options) 21 | { 22 | Forms.SetFlags("CollectionView_Experimental"); 23 | Forms.SetFlags("CarouselView_Experimental"); 24 | Forms.Init(); 25 | 26 | App.ScreenWidth = UIScreen.MainScreen.Bounds.Width; 27 | App.ScreenHeight = UIScreen.MainScreen.Bounds.Height; 28 | 29 | LoadApplication(new App()); 30 | 31 | return base.FinishedLaunching(app, options); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIDeviceFamily 6 | 7 | 1 8 | 2 9 | 10 | UISupportedInterfaceOrientations 11 | 12 | UIInterfaceOrientationPortrait 13 | UIInterfaceOrientationPortraitUpsideDown 14 | UIInterfaceOrientationLandscapeLeft 15 | 16 | UISupportedInterfaceOrientations~ipad 17 | 18 | UIInterfaceOrientationPortrait 19 | UIInterfaceOrientationPortraitUpsideDown 20 | UIInterfaceOrientationLandscapeLeft 21 | UIInterfaceOrientationLandscapeRight 22 | 23 | MinimumOSVersion 24 | 8.0 25 | CFBundleDisplayName 26 | SwipeCardView.Sample 27 | CFBundleIdentifier 28 | com.companyname.SwipeCardView.Sample 29 | CFBundleVersion 30 | 1.0 31 | UILaunchStoryboardName 32 | LaunchScreen 33 | CFBundleName 34 | SwipeCardView.Sample 35 | XSAppIconAssets 36 | Assets.xcassets/AppIcon.appiconset 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/MLToolkit.Forms.SwipeCardView/Core/DraggingCardEventArgs.cs: -------------------------------------------------------------------------------- 1 | namespace MLToolkit.Forms.SwipeCardView.Core 2 | { 3 | /// Arguments for swipe events. 4 | public class DraggingCardEventArgs : System.EventArgs 5 | { 6 | public DraggingCardEventArgs(object item, object parameter, SwipeCardDirection direction, DraggingCardPosition position, double distanceDraggedX, double distanceDraggedY) 7 | { 8 | Item = item; 9 | Parameter = parameter; 10 | Direction = direction; 11 | Position = position; 12 | DistanceDraggedX = distanceDraggedX; 13 | DistanceDraggedY = distanceDraggedY; 14 | } 15 | 16 | /// Gets the item parameter. 17 | public object Item { get; private set; } 18 | 19 | /// Gets the command parameter. 20 | public object Parameter { get; private set; } 21 | 22 | /// Gets the direction of the swipe. 23 | public SwipeCardDirection Direction { get; private set; } 24 | 25 | /// Gets the dragging position. 26 | public DraggingCardPosition Position { get; private set; } 27 | 28 | /// Gets the distance dragged on X axis. 29 | public double DistanceDraggedX { get; private set; } 30 | 31 | /// Gets the distance dragged on Y axis. 32 | public double DistanceDraggedY { get; private set; } 33 | } 34 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("SwipeCardView.Sample.iOS")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("SwipeCardView.Sample.iOS")] 12 | [assembly: AssemblyCopyright("Copyright © 2020")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 26 | 27 | 30 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/SimplePage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 14 | 15 | 16 | 18 | 19 | 20 | 28 | 29 | -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). 6 | 7 | ## 2.2.0 8 | 9 | - Added a new property 'LoopCards' that enables infinite swiping of cards - thanks to @noormahammad 10 | - Added SwipeCardView dispose logic - thanks to @Tommigun1980 11 | - Variuos bug fixed related to ItemSource Reset - thanks to @Tommigun1980 12 | 13 | ## 2.1.0 14 | 15 | - [#14](https://github.com/markolazic88/SwipeCardView/issues/14) - Fixed index out of range exception 16 | - [#7](https://github.com/markolazic88/SwipeCardView/issues/7) - Added graceful handling when ItemsSource is empty 17 | - Updated Xamarin Forms dependency to 4.2.0.848062 or higher 18 | - Added unit tests and more page samples 19 | - Code cleanup 20 | 21 | ## 2.0.0 22 | 23 | - Introduced SwipeCommand and Swiped event, SwipedEventArgs and SwipedCardDirection 24 | - Introduced DraggingCommand, Dragging event, DraggingCardEventArgs and DraggingCardPosition 25 | - Introduced InvokeSwipe method, which replaces InvokeSwipeLeft and InvokeSwipeRight 26 | - Support for swiping and dragging in all 4 directions 27 | - Removed updating card background in favor of Dragging command/event 28 | - Added Samples (TinderPage, ColorsPage, CustomizablePage) 29 | - Added full documentation 30 | - Implemented CI pipeline 31 | - Exposed many consts to be parameters (card rotation adjuster, back card scale, animation length etc.) 32 | 33 | ## 1.2.0 34 | 35 | - Updated library to target netstandard 2.0 36 | - Updated Xamarin Forms dependency to 3.0.0.561731 37 | - Added InvokeSwipeLeft and InvokeSwipeRight methods 38 | 39 | ## 1.1.0 40 | 41 | - Updated Xamarin Forms dependency to 2.5.0.91635. 42 | 43 | ## 1.0.0 44 | 45 | - Initial release 46 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.Android/Resources/AboutResources.txt: -------------------------------------------------------------------------------- 1 | Images, layout descriptions, binary blobs and string dictionaries can be included 2 | in your application as resource files. Various Android APIs are designed to 3 | operate on the resource IDs instead of dealing with images, strings or binary blobs 4 | directly. 5 | 6 | For example, a sample Android app that contains a user interface layout (main.xml), 7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) 8 | would keep its resources in the "Resources" directory of the application: 9 | 10 | Resources/ 11 | drawable-hdpi/ 12 | icon.png 13 | 14 | drawable-ldpi/ 15 | icon.png 16 | 17 | drawable-mdpi/ 18 | icon.png 19 | 20 | layout/ 21 | main.xml 22 | 23 | values/ 24 | strings.xml 25 | 26 | In order to get the build system to recognize Android resources, set the build action to 27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but 28 | instead operate on resource IDs. When you compile an Android application that uses resources, 29 | the build system will package the resources for distribution and generate a class called 30 | "Resource" that contains the tokens for each one of the resources included. For example, 31 | for the above Resources layout, this is what the Resource class would expose: 32 | 33 | public class Resource { 34 | public class drawable { 35 | public const int icon = 0x123; 36 | } 37 | 38 | public class layout { 39 | public const int main = 0x456; 40 | } 41 | 42 | public class strings { 43 | public const int first_string = 0xabc; 44 | public const int second_string = 0xbcd; 45 | } 46 | } 47 | 48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main 49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first 50 | string in the dictionary file values/strings.xml. 51 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/ColorsPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 17 | 18 | 19 | 20 | 21 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/Misc/TemplateSelectorPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/SwipeCardView.Sample.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | true 6 | 7 | 8 | 9 | portable 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | CustomizablePage.xaml 24 | 25 | 26 | MiscContainerPage.xaml 27 | 28 | 29 | SimplePage.xaml 30 | 31 | 32 | 33 | 34 | 35 | MSBuild:UpdateDesignTimeXaml 36 | 37 | 38 | MSBuild:UpdateDesignTimeXaml 39 | 40 | 41 | MSBuild:UpdateDesignTimeXaml 42 | 43 | 44 | MSBuild:UpdateDesignTimeXaml 45 | 46 | 47 | MSBuild:UpdateDesignTimeXaml 48 | 49 | 50 | MSBuild:UpdateDesignTimeXaml 51 | 52 | 53 | MSBuild:UpdateDesignTimeXaml 54 | 55 | 56 | MSBuild:UpdateDesignTimeXaml 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/ViewModel/SimplePageViewModel.cs: -------------------------------------------------------------------------------- 1 | using MLToolkit.Forms.SwipeCardView.Core; 2 | using System.Collections.ObjectModel; 3 | using System.Windows.Input; 4 | using Xamarin.Forms; 5 | 6 | namespace SwipeCardView.Sample.ViewModel 7 | { 8 | public class SimplePageViewModel : BasePageViewModel 9 | { 10 | private ObservableCollection _cardItems; 11 | private bool _isLoopCards; 12 | private string _message; 13 | 14 | public SimplePageViewModel() 15 | { 16 | _cardItems = new ObservableCollection(); 17 | for (var i = 1; i <= 5; i++) 18 | { 19 | _cardItems.Add($"Card {i}"); 20 | } 21 | _isLoopCards = true; 22 | SwipedCommand = new Command(OnSwipedCommand); 23 | 24 | ClearItemsCommand = new Command(OnClearItemsCommand); 25 | AddItemsCommand = new Command(OnAddItemsCommand); 26 | } 27 | 28 | public ObservableCollection CardItems 29 | { 30 | get => _cardItems; 31 | set 32 | { 33 | _cardItems = value; 34 | RaisePropertyChanged(); 35 | } 36 | } 37 | 38 | public string Message 39 | { 40 | get => _message; 41 | set 42 | { 43 | _message = value; 44 | RaisePropertyChanged(); 45 | } 46 | } 47 | 48 | public bool IsLoopCards 49 | { 50 | get => _isLoopCards; 51 | set 52 | { 53 | _isLoopCards = value; 54 | RaisePropertyChanged(); 55 | } 56 | } 57 | 58 | public ICommand SwipedCommand { get; } 59 | 60 | public ICommand ClearItemsCommand { get; } 61 | 62 | public ICommand AddItemsCommand { get; } 63 | 64 | private void OnSwipedCommand(SwipedCardEventArgs eventArgs) 65 | { 66 | var item = eventArgs.Item as string; 67 | Message = $"{item} swiped {eventArgs.Direction}"; 68 | } 69 | 70 | private void OnClearItemsCommand() 71 | { 72 | CardItems.Clear(); 73 | Message = string.Empty; 74 | } 75 | 76 | private void OnAddItemsCommand() 77 | { 78 | for (var i = 1; i <= 5; i++) 79 | { 80 | CardItems.Add($"Card {i}"); 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/ViewModel/ColorsPageViewModel.cs: -------------------------------------------------------------------------------- 1 | using MLToolkit.Forms.SwipeCardView.Core; 2 | using System; 3 | using System.Collections.ObjectModel; 4 | using System.Windows.Input; 5 | using Xamarin.Forms; 6 | 7 | namespace SwipeCardView.Sample.ViewModel 8 | { 9 | public class ColorsPageViewModel : BasePageViewModel 10 | { 11 | private ObservableCollection _cardItems; 12 | 13 | public ColorsPageViewModel() 14 | { 15 | _cardItems = new ObservableCollection(); 16 | for (var i = 1; i <= 5; i++) 17 | { 18 | _cardItems.Add($"Card {i}"); 19 | } 20 | 21 | SwipedCommand = new Command(OnSwipedCommand); 22 | DraggingCommand = new Command(OnDraggingCommand); 23 | 24 | ClearItemsCommand = new Command(OnClearItemsCommand); 25 | AddItemsCommand = new Command(OnAddItemsCommand); 26 | } 27 | 28 | public ObservableCollection CardItems 29 | { 30 | get => _cardItems; 31 | set 32 | { 33 | _cardItems = value; 34 | RaisePropertyChanged(); 35 | } 36 | } 37 | 38 | public ICommand SwipedCommand { get; } 39 | 40 | public ICommand DraggingCommand { get; } 41 | 42 | public ICommand ClearItemsCommand { get; } 43 | 44 | public ICommand AddItemsCommand { get; } 45 | 46 | private void OnSwipedCommand(SwipedCardEventArgs eventArgs) 47 | { 48 | } 49 | 50 | private void OnDraggingCommand(DraggingCardEventArgs eventArgs) 51 | { 52 | switch (eventArgs.Position) 53 | { 54 | case DraggingCardPosition.Start: 55 | return; 56 | 57 | case DraggingCardPosition.UnderThreshold: 58 | break; 59 | 60 | case DraggingCardPosition.OverThreshold: 61 | break; 62 | 63 | case DraggingCardPosition.FinishedUnderThreshold: 64 | return; 65 | 66 | case DraggingCardPosition.FinishedOverThreshold: 67 | break; 68 | 69 | default: 70 | throw new ArgumentOutOfRangeException(); 71 | } 72 | } 73 | 74 | private void OnClearItemsCommand() 75 | { 76 | CardItems.Clear(); 77 | } 78 | 79 | private void OnAddItemsCommand() 80 | { 81 | for (var i = 1; i <= 5; i++) 82 | { 83 | CardItems.Add($"Card {i}"); 84 | } 85 | } 86 | } 87 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Resources/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "scale": "2x", 5 | "size": "20x20", 6 | "idiom": "iphone", 7 | "filename": "Icon40.png" 8 | }, 9 | { 10 | "scale": "3x", 11 | "size": "20x20", 12 | "idiom": "iphone", 13 | "filename": "Icon60.png" 14 | }, 15 | { 16 | "scale": "2x", 17 | "size": "29x29", 18 | "idiom": "iphone", 19 | "filename": "Icon58.png" 20 | }, 21 | { 22 | "scale": "3x", 23 | "size": "29x29", 24 | "idiom": "iphone", 25 | "filename": "Icon87.png" 26 | }, 27 | { 28 | "scale": "2x", 29 | "size": "40x40", 30 | "idiom": "iphone", 31 | "filename": "Icon80.png" 32 | }, 33 | { 34 | "scale": "3x", 35 | "size": "40x40", 36 | "idiom": "iphone", 37 | "filename": "Icon120.png" 38 | }, 39 | { 40 | "scale": "2x", 41 | "size": "60x60", 42 | "idiom": "iphone", 43 | "filename": "Icon120.png" 44 | }, 45 | { 46 | "scale": "3x", 47 | "size": "60x60", 48 | "idiom": "iphone", 49 | "filename": "Icon180.png" 50 | }, 51 | { 52 | "scale": "1x", 53 | "size": "20x20", 54 | "idiom": "ipad", 55 | "filename": "Icon20.png" 56 | }, 57 | { 58 | "scale": "2x", 59 | "size": "20x20", 60 | "idiom": "ipad", 61 | "filename": "Icon40.png" 62 | }, 63 | { 64 | "scale": "1x", 65 | "size": "29x29", 66 | "idiom": "ipad", 67 | "filename": "Icon29.png" 68 | }, 69 | { 70 | "scale": "2x", 71 | "size": "29x29", 72 | "idiom": "ipad", 73 | "filename": "Icon58.png" 74 | }, 75 | { 76 | "scale": "1x", 77 | "size": "40x40", 78 | "idiom": "ipad", 79 | "filename": "Icon40.png" 80 | }, 81 | { 82 | "scale": "2x", 83 | "size": "40x40", 84 | "idiom": "ipad", 85 | "filename": "Icon80.png" 86 | }, 87 | { 88 | "scale": "1x", 89 | "size": "76x76", 90 | "idiom": "ipad", 91 | "filename": "Icon76.png" 92 | }, 93 | { 94 | "scale": "2x", 95 | "size": "76x76", 96 | "idiom": "ipad", 97 | "filename": "Icon152.png" 98 | }, 99 | { 100 | "scale": "2x", 101 | "size": "83.5x83.5", 102 | "idiom": "ipad", 103 | "filename": "Icon167.png" 104 | }, 105 | { 106 | "scale": "1x", 107 | "size": "1024x1024", 108 | "idiom": "ios-marketing", 109 | "filename": "Icon1024.png" 110 | } 111 | ], 112 | "properties": {}, 113 | "info": { 114 | "version": 1, 115 | "author": "xcode" 116 | } 117 | } -------------------------------------------------------------------------------- /src/SwipeCardView.Sample/SwipeCardView.Sample/View/ColorsPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using MLToolkit.Forms.SwipeCardView.Core; 2 | using SwipeCardView.Sample.ViewModel; 3 | using System; 4 | using Xamarin.Forms; 5 | using Xamarin.Forms.Xaml; 6 | 7 | namespace SwipeCardView.Sample.View 8 | { 9 | [XamlCompilation(XamlCompilationOptions.Compile)] 10 | public partial class ColorsPage : ContentPage 11 | { 12 | public ColorsPage() 13 | { 14 | InitializeComponent(); 15 | BindingContext = new ColorsPageViewModel(); 16 | 17 | SwipeCardView.Dragging += OnDragging; 18 | } 19 | 20 | private void OnDragging(object sender, DraggingCardEventArgs e) 21 | { 22 | var view = (Xamarin.Forms.View)sender; 23 | 24 | var directionLabel = view.FindByName