{"id":28916431,"url":"https://github.com/intuit/truffle-shuffle","last_synced_at":"2025-09-23T19:22:06.193Z","repository":{"id":36706191,"uuid":"177894112","full_name":"intuit/truffle-shuffle","owner":"intuit","description":"An Android data-driven, percentage-based UI Card Gallery Library","archived":false,"fork":false,"pushed_at":"2023-01-06T04:30:35.000Z","size":27809,"stargazers_count":150,"open_issues_count":8,"forks_count":45,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-21T23:42:23.495Z","etag":null,"topics":["android","android-ui","data-visualization","kotlin","library","mobile","ui"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/intuit.png","metadata":{"files":{"readme":"README.ar.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null}},"created_at":"2019-03-27T01:13:07.000Z","updated_at":"2025-06-11T08:01:33.000Z","dependencies_parsed_at":"2023-01-17T04:15:22.434Z","dependency_job_id":null,"html_url":"https://github.com/intuit/truffle-shuffle","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/intuit/truffle-shuffle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intuit%2Ftruffle-shuffle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intuit%2Ftruffle-shuffle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intuit%2Ftruffle-shuffle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intuit%2Ftruffle-shuffle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/intuit","download_url":"https://codeload.github.com/intuit/truffle-shuffle/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/intuit%2Ftruffle-shuffle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276633834,"owners_count":25677167,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-23T02:00:09.130Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-ui","data-visualization","kotlin","library","mobile","ui"],"created_at":"2025-06-21T23:39:34.353Z","updated_at":"2025-09-23T19:22:06.185Z","avatar_url":"https://github.com/intuit.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"400\"\nsrc=\".github/truffleshuffle_logo_with_name.svg\"\u003e\n\u003c/div\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-)\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nTruffle Shuffle عبارة عن مكتبة لمعرض بطاقة مكون Android UI مع رسوم متحركة ممتعة. يمكن تخصيص المعرض بسهولة وهو يعتمد على البيانات بناءً على عدد العناصر في المصفوفة والمحتوى الموجود داخل تلك الكائنات. يستخدم معرض البطاقات نظام Android ViewGroup المخصص مع سمات عرض مخصصة لتحديد حجم البطاقات الفردية كنسبة مئوية من حجم ViewGroup. يُستخدم معرض البطاقات هذا في تطبيق TurboTax للجوّال في تشكيلة المنتجات. Truffle Shuffle مكتوب بنسبة 100٪ بلغة Kotlin!\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/TurboTaxCards.gif\" width=\"300\" alt=\"TurboTax cards\"/\u003e\n    \u003cimg src=\".github/textcontentvideo.gif\" width=\"300\" alt=\"Text content video\"/\u003e\n    \u003cimg src=\".github/textcontentvideowithmargins.gif\" width=\"300\" alt=\"Text content with margins video\"/\u003e\n    \u003cimg src=\".github/textcontentvideo3cards.gif\" width=\"300\" alt=\"Text content with 3 cards video\"/\u003e\n    \u003cimg src=\".github/textcardswithtitle.gif\" width=\"300\" alt=\"Text content with titles video\"/\u003e\n    \n\u003c/p\u003e\n\u003c/div\u003e\n\n# بداية سريعة\n\nلتشغيل مشروع المثال ، قم باستنساخ الريبو وتشغيل تطبيق Android من خلاله[بيئة تطوير أندرويد](https://developer.android.com/studio/)على المحاكي.\nيمكنك اللعب مع المثال من خلال\n\n-   تغيير التخطيط داخل البطاقات في app / src / main / res / layout / card_layout.xml\n-   تغيير عدد البطاقات في المصفوفة في getCardDetails () في app / src / main / kotlin / com / intuit / truffle / shuffle / MainActivity.kt\n-   تغيير النسب المئوية لمجموعة العرض في app / src / main / res / القيم / card_view_group_percentages.xml\n\nللمساهمة في هذا المشروع ، تأكد من أن الكود الملتزم به يطابق معايير تنسيق هذا المشروع.\n\nلإعادة التنسيق أو التحقق من توافق التعليمات البرمجية الملتزمة ، اتبع أحد الخيارات التالية:\n\n#### استخدم مهام Gradle (موصى به -[مستندات ktlint](https://ktlint.github.io/)):\n\n-   `./gradlew ktlint`\n     \u003cp\u003e Use this command to check the formatting rules are covered \u003c/p\u003e\n-   `/gradlew ktlintFormat`\n     \u003cp\u003e Use this command to re-format code that is not compliant with this project's formatting rules. \u003c/p\u003e \n\n#### استخدم محرك ktlint ([مستندات ktlint](https://ktlint.github.io/)):\n\n-   `ktlint`\n     \u003cp\u003e Use this command to check the formatting rules are covered \u003c/p\u003e\n-   `ktlint \"src/**/*.kt\" \"!src/**/*Test.kt\"`\n     \u003cp\u003e Check only certain locations (prepend ! to negate the pattern) \u003c/p\u003e     \n-   `ktlint -F`\n     \u003cp\u003e Use this command to re-format code that is not compliant with this project's formatting rules.\n     (if some errors cannot be fixed automatically they will be printed to stderr) \u003c/p\u003e \n-   `ktlint -F \"src/**/*.kt\"`\n     \u003cp\u003e Use this command to re-format certain locations (prepend ! to negate the pattern)  . \n     (if some errors cannot be fixed automatically they will be printed to stderr) \u003c/p\u003e    \n-   `ktlint --install-git-pre-commit-hook`\n     \u003cp\u003e Install git hook to automatically check files for style violations on commit. \u003c/p\u003e       \n     \n\n# باستخدام Truffle Shuffle\n\nلإضافة هذا إلى تطبيق Android الخاص بك ، أكمل الخطوات التالية:\n\n1.  أضف التبعية إلى ملف build.gradle الخاص بمشروعك ضمن التبعيات:\n\n\n    dependencies {\n        implementation 'com.intuit.truffleshuffle:truffleshuffle:1.0.0'\n    }\n\nوتأكد من إضافة jcenter () إلى تطبيق build.gradle\n\n    repositories {\n        jcenter()\n    }\n\n2.  أضف com.intuit.truffleshuffle.CardViewGroup إلى ملف xml حيث تريد معرض البطاقات ، مثل app / src / main / res / layout / activity_main.xml\n    -   أضف النسب المئوية التي تريدها إلى السمات المخصصة لـ CardViewGroup في ملف xml\n        -   custom: dashboardCardHeightPercentage ، مخصص: widthPercentage ، مخصص: topSpacingPercentage ، custom: bottomSpacingPercentage\n3.  أضف تنسيق xml (card_layout.xml) لمحتويات بطاقاتك المشابهة لـ app / src / main / res / layout / card_layout.xml\n4.  قم بإنشاء بطاقة مجلد معرض مع ملفين:\n    -   CardContent similar to app/src/main/kotlin/com/intuit/truffle/shuffle/cardGallery/CardContent.kt\n        -   هذا هو كائن البيانات الخاص بك لمحتويات البطاقة\n    -   CustomizeAdapter مشابه لـ app / src / main / kotlin / com / intuit / truffle / shuffle / cardGallery / CustomizeAdapter.kt\n        -   يجب أن يأخذ المنشئ ArrayList\u003cCardContent\u003eويجب أن يوسع CardContentAdapter\u003cCardContent\u003e\n        -   تجاوز وظيفة getViewContent () لتعيين محتوى البيانات في CardContent إلى طرق العرض في card_layout.xml ، على سبيل المثال. ضبط النص في عرض النص\n5.  في النشاط حيث ستستخدم مكون واجهة المستخدم هذا:\n    -   قم بإنشاء CustomizeAdapter الذي حددته للتو وقم بتمرير قائمة صفيف لمحتويات البطاقة ومعرف المورد داخل البطاقة أي. R.layout.card_layout\n    -   استدعاء setupAdapter () على CustomizeAdapter الذي أنشأته للتو باستخدام CardViewGroup باستخدام findViewById ()\n6.  الآن عنصر TruffleShuffle UI جاهز للاستخدام!\n\n# التواصل والمساهمة\n\n-   اذا أنت**تحتاج مساعدة**، افتح مشكلة وضع علامة باسم`help wanted`.\n-   اذا أنت**وجدت خطأ**، افتح مشكلة وضع علامة باسم`bug`.\n-   اذا أنت**طلب ميزة**، افتح مشكلة وضع علامة باسم`feature`.\n-   اذا أنت**تريد المساهمة**، يرجى الرجوع إلى وثائق المساهمة وإرسال طلب سحب.\n    -   من أجل تقديم طلب سحب ، يرجى تفرع هذا الريبو وإرسال بيان عام من الريبو المتشعب الخاص بك.\n    -   احصل على رسالة مفصلة حول ما يصلح / يعزز / يضيف علاقاتك العامة.\n    -   يجب أن تحصل كل علاقات عامة على موافقة قبل أن ندمج.\n\n## المساهمون ✨\n\nالشكر يذهب إلى هؤلاء الأشخاص الرائعين ([مفتاح الرموز التعبيرية](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\n\u003c!-- prettier-ignore-start --\u003e\n\n\u003c!-- markdownlint-disable --\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.katielevy.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/8975181?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKatie Levy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=katielevy1\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/roxiomontes\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/14279937?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRocio Montes\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=roxiomontes\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/monicamiyasato\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/56657880?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emonicamiyasato\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=monicamiyasato\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.linkedin.com/in/napoleon-salazar-15744154/\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/16261373?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ecfsnsalazar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=cfsnsalazar\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/MathiasX1\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13027082?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMathiasX1\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=MathiasX1\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/abaer123\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/22059145?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAnthony Baer\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=abaer123\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/adilanchian\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/13204620?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAlec Dilanchian\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=adilanchian\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/hwangange\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/12180288?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAngela Hwang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=hwangange\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/henry398\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/28519908?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ehenry398\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=henry398\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://linktr.ee/Sanchi_Rastogi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46872971?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSanchi Rastogi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=sanchi0204\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/adrishyantee\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/73780844?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAdrishyantee Maiti\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=adrishyantee\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://kerinpithawala.netlify.app/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46436993?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKerin Pithawala\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=KerinPithawala\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://ritaokonkwo6@gmail.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35587632?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eOkonkwo Rita\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=Rita-Okonkwo\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/amypritc\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/20962408?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAmy Rathore\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=amypritc\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Anusha05\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/6751651?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAnusha Bandekar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/intuit/truffle-shuffle/commits?author=Anusha05\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nهذا المشروع يتبع[كل المساهمين](https://github.com/all-contributors/all-contributors)تخصيص. مساهمات من أي نوع مرحب بها!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintuit%2Ftruffle-shuffle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fintuit%2Ftruffle-shuffle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fintuit%2Ftruffle-shuffle/lists"}