قالب اپلیکیشن فروشگاهی B4A — رابط کاربری کامل، دو تم، بدون فایل لایوت

# 📱 قالب اپلیکیشن فروشگاهی — Basic4Android

یک رابط کاربری **کامل و حرفه‌ای** برای اپ فروشگاهی، آماده برای وصل کردن به دادهٔ واقعی.

همه‌چیز در کد ساخته می‌شود؛ **هیچ فایل لایوت (Designer) لازم نیست.**

---

## 🎨 چه چیزی داخل قالب هست؟

- 🟣 **سربرگ واکنش‌گرا** — روی گوشی کوچک، نام فروشگاه خودکار کنار می‌رود تا کادر جست‌وجو تنگ نشود

- 🖼️ **اسلایدر تبلیغاتی** — سه اسلاید با تغییر خودکار هر ۴ ثانیه + نقطه‌های نشانگر

- 🗂️ **نوار دسته‌بندی افقی** — چیپ‌های قابل اسکرول؛ انتخاب‌شده برجسته می‌شود

- 🛍️ **شبکه محصولات دوستونه** — کارت با کادر تصویر، برچسب درصد تخفیف، نام، امتیاز، قیمت و دکمهٔ افزودن

- 🛒 **سبد خرید شمارشی** — نشانگر قرمز روی آیکن سبد با ارقام فارسی

- 📊 **نوار پایین** — خانه / دسته‌ها / سبد / پروفایل

- 🌗 **دو تم (تاریک و روشن)** — با یک تابع عوض می‌شود؛ رنگ‌ها از پیش از نظر کنتراست تست شده‌اند

- 🔍 **کادر جست‌وجو** با رویداد EnterPressed

- 🇮🇷 **کمک‌کارهای فارسی** — `۱,۲۵۰,۰۰۰ تومان` با ارقام فارسی و جداکنندهٔ هزارگان

---

## 🧪 چرا این قالب «بی‌دردسر» است؟

**۱۵۲ تست خودکار، همه سبز** — این قالب با تست ساخته شده، نه با حدس:

| سنجه | نتیجه |

|---|---|

| نسبت کنتراست متن روی کارت | **۱۴.۳:۱** (تاریک) و **۱۷:۱** (روشن) — استاندارد ۴.۵ |

| چیدمان در سه اندازهٔ گوشی (۳۲۰/۳۹۲/۴۳۰ dip) | بدون همپوشانی |

| هم‌خوانی کد با مدل چیدمان | خودکار بررسی می‌شود |

| خطاهای رایج B4A | صفر |

> **تست چیدمان یعنی چه؟** یعنی قبل از اینکه شما در B4A خطا ببینید، ریاضیات همهٔ

> مختصات (چپ، بالا، عرض، ارتفاع) در سه اندازهٔ صفحه محاسبه و بررسی شده که هیچ

> دو عنصری روی هم نیفتد و چیزی از صفحه بیرون نزند.

---

## 🖼️ پیش‌نمایش

دو تصویر تمام‌صفحه (`preview/preview-dark.png` و `preview-light.png`) داخل بسته هست،

به‌همراه اسکریپت پایتونی که همان پیش‌نمایش را می‌سازد. یعنی اگر رنگی را عوض کردید،

می‌توانید قبل از اجرای B4A نتیجه را ببینید.

---

## 🚀 نصب در ۳ مرحله

1. پروژهٔ جدید در B4A (Package: `ir.yourname.shop`)

2. `Project → Add Existing Modules`:

- `Modules/Theme.bas`

- `Main.bas`

3. `F5` — اپ بالا می‌آید.

> اگر پروژه از قبل `Main.bas` دارد، نام فایل را به `ShopUI.bas` تغییر دهید.

---

## 🎛️ شخصی‌سازی سریع

**رنگ‌ها** — همه در `Modules/Theme.bas`:

```

Public Sub ApplyDarkTheme

ColBg = Colors.RGB(15, 18, 30) ' پس‌زمینه

ColPrimary = Colors.RGB(108, 92, 231) ' رنگ برند

ColAccent = Colors.RGB(120, 220, 180) ' رنگ قیمت

End Sub

```

**محصولات** — در `Main.bas` داخل `BuildProductGrid`:

```

Dim names() As String = Array As String("محصول من", ...)

Dim prices() As Long = Array As Long(1250000, ...)

Dim sales() As Long = Array As Long(890000, ...) ' صفر = بدون تخفیف

```

**دسته‌ها** — یک آرایه؛ عرض هر چیپ خودکار از طول متن حساب می‌شود.

---

## 📚 راهنمای کامل فارسی

`Docs/راهنمای-قالب.md` شامل:

- معماری صفحه به صفحه

- جدول کامل رنگ‌ها و کاربردشان

- **افزودن صفحهٔ جزئیات محصول** (کد آماده)

- **اتصال به API واقعی** با HttpJob و JSON

- چک‌لیست انتشار در بازار

- جدول عیب‌یابی

---

## 💡 نکات فنی که در بازار پیدا نمی‌کنید

این قالب مسائل واقعی B4A را حل کرده:

1. **چند دکمه، یک تابع:** در B4A یک `Sub` نمی‌تواند دو رویداد بگیرد، ولی چند نما

می‌توانند یک نام رویداد داشته باشند — با `Sender` و `Tag` تفکیک شده‌اند.

2. **ارتفاع اسکرول‌ویو:** اگر نوار پایین روی اسکرول‌ویو بیفتد، آخرین ردیف محصول پنهان

می‌شود؛ اینجا ارتفاع درست تنظیم شده.

3. **کادر جست‌وجو در تم روشن:** اگر هم‌رنگ سربرگ باشد دیده نمی‌شود؛ رنگ اختصاصی

`ColField` برایش تعریف شده.

4. **تبدیل ارقام:** تابع `FaDigits` رشته‌ای است و `ToFaDigits` عددی — قاطی کردنشان

خطای زمان اجرا می‌دهد.

---

## 🎁 ایدهٔ استفاده

- راه‌اندازی فروشگاه آنلاین کوچک (با API ساده)

- نمایش کاتالوگ محصولات یک کسب‌وکار (بدون فروش آنلاین)

- قالب پایه برای هر اپ لیستی (آگهی، رستوران، ویدیو) — ساختار آماده است

---

## 📄 مجوز

انتشار اپ ساخته‌شده با این قالب با نام خودتان **آزاد است**.

فروش مجدد قالب یا انتشار آن به‌عنوان محصول مستقل مجاز نیست.

---

💬 سؤالی دارید؟ از بخش پشتیبانی فروشگاه پیام بدهید.

دسته‌بندیقالب اپلیکیشن
تاریخ انتشار۲۲ شهریور ۱۴۰۵ - ۰۱:۵۴
تعداد بازدید۴
تعداد فروش۰
فرمت تحویلفایل دانلودی (بعد از پرداخت آنی فعال می‌شود)
پشتیبانیتیکت پشتیبانی در پنل کاربری

ویژگی‌های کلیدی

  • رابط کاربری کامل و آمادهٔ اپ فروشگاهی — تمام کد، بدون فایل لایوت
  • سربرگ واکنش‌گرا: روی گوشی کوچک، نام فروشگاه خودکار حذف می‌شود
  • اسلایدر تبلیغاتی با تغییر خودکار و نقطه‌های نشانگر
  • نوار دسته‌بندی افقی با چیپ‌های قابل اسکرول
  • شبکه محصولات دوستونه با کارت‌های کامل
  • برچسب درصد تخفیف روی کارت محصول
  • سبد خرید با نشانگر تعداد و ارقام فارسی
  • نوار پایین: خانه / دسته‌ها / سبد / پروفایل
  • دو تم تاریک و روشن با یک تابع
  • رنگ‌ها از نظر کنتراست تست شده: ۱۴.۳:۱ (تاریک) و ۱۷:۱ (روشن)
  • ۱۵۲ تست خودکار چیدمان و کنتراست در سه اندازهٔ گوشی
  • دو تصویر پیش‌نمایش تمام‌صفحه + اسکریپت رندر پیش‌نمایش
  • راهنمای فارسی کامل: افزودن صفحه، اتصال به API، انتشار در بازار
  • کمک‌کارهای فارسی: قیمت تومانی با جداکنندهٔ هزارگان
  • الگوی «چند دکمه، یک تابع» با Sender و Tag

هنوز نظری ثبت نشده است. اولین نفر باشید!

برای ثبت نظر وارد شوید. (ثبت نظر پس از خرید فعال می‌شود)

B4A — کد نمونه رایگان این تکه‌کد را می‌توانید مستقیم در پروژه بیسیک۴اندروید استفاده کنید
' ═══ نمونه‌ای از سورس (بخشی از قالب) ═══

' رنگ‌ها همه در یک ماژول (Theme.bas) — با یک تابع عوض می‌شوند
Public Sub ApplyDarkTheme
    ColBg      = Colors.RGB(15, 18, 30)
    ColHeader  = Colors.RGB(21, 25, 40)
    ColCard    = Colors.RGB(28, 33, 50)
    ColText    = Colors.RGB(238, 242, 255)
    ColPrimary = Colors.RGB(108, 92, 231)
    ColAccent  = Colors.RGB(120, 220, 180)
End Sub

' ⚠ دام واقعی B4A: چند دکمه با یک نام رویداد ساخته می‌شوند
'   (در B4A یک Sub نمی‌تواند دو رویداد بگیرد، ولی چند نما یک نام رویداد OK است)
Dim btnW As Int = 96dip
Dim logoW As Int = 110dip
Dim searchW As Int = W - btnW - logoW - (Theme.PAD * 2)
If searchW < 110dip Then
    logoW = 0                                  ' صفحهٔ کوچک → نام فروشگاه قربانی
    searchW = W - btnW - (Theme.PAD * 2)
End If

' قیمت با ارقام فارسی و جداکنندهٔ هزارگان
Public Sub FaPrice(price As Long) As String
    Dim s As String = "" & price
    Dim out As StringBuilder
    out.Initialize
    Dim cnt As Int = 0
    For i = s.Length - 1 To 0 Step -1
        If cnt > 0 And (cnt Mod 3) = 0 Then out.Insert(0, ",")
        out.Insert(0, s.SubString2(i, i + 1))
        cnt = cnt + 1
    Next
    Return FaDigits(out.ToString) & " تومان"
End Sub

⚠ نسخهٔ کامل شامل سربرگ، اسلایدر، شبکه محصولات، نوار پایین و راهنمای فارسی است.
تخصصی بیسیک۴اندرویدسورس‌کد آمادهآموزش گام‌به‌گامکتابخانه‌های کاربردیتحویل آنی بعد از پرداختپشتیبانی واقعی ۲۴/۷بروزرسانی رایگان+۲۲ محصول فعال