Budżet: 2000 UAH Termin: 3 dni
Dzień dobry, mogę szybko i jakościowo zrealizować twoje zamówienie.
Cześć!
Jest strona z górnym paskiem narzędzi ConstraintLayout, wewnątrz po lewej stronie Nagłówek, po prawej edytowanie.
Trzeba dodać małe ikony stories pośrodku, które będą się nawzajem otaczać i będą miały wspólną obwódkę.
To w stanie Collapsed.
Na dole znajduje się pionowy RecyclerView.
Podczas przeciągania w dół, scroll powinien się zakończyć, a następnie, jeśli przeciągniesz jeszcze raz w dół, stories powinny się rozwinąć jak w telegramie. Poniżej załączę plik.
Po tym, jak stories się rozwiną (stan Expanded), między stories powinno pojawić się odstęp 16dp, a obwódki powinny się rozdzielić, każda z własną obwódką, biorąc pod uwagę, ile jest treści wewnątrz.
Ale trzeba to zrobić bez użycia CoordinatorLayout lub Compose, ponieważ musi być xml i z MotionLayout.
Proszę napisz, jakie są terminy i koszt, jeśli to wykonalne

Budżet: 2000 UAH Termin: 3 dni
Dzień dobry, mogę szybko i jakościowo zrealizować twoje zamówienie.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.motion.widget.MotionLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/motionLayout" android:layout_width="match_parent" android:layout_height="match_parent" app:layoutDescription="@xml/activity_main_scene"> <!-- Внутрішній MotionLayout для анімацій всередині "Toolbar" --> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="56dp" android:background="?colorPrimary"/> <ImageView android:id="@+id/stories_1" android:layout_width="0dp" android:layout_height="0dp" android:src="@drawable/ic_stor_1"/> <ImageView android:id="@+id/stories_2" android:layout_width="0dp" android:layout_height="0dp" android:src="@drawable/ic_stor_2" /> <!-- Нижня частина інтерфейсу (можливо, FrameLayout або RecyclerView) --> <FrameLayout android:id="@+id/frameLay" android:layout_width="match_parent" android:layout_height="0dp" android:background="@android:color/transparent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/toolbar" /> </androidx.constraintlayout.motion.widget.MotionLayout>
activity_main_scene.xml<?xml version="1.0" encoding="utf-8"?> <MotionScene xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:motion="http://schemas.android.com/tools"> <Transition android:id="@+id/default_transition" app:constraintSetEnd="@+id/start" app:constraintSetStart="@+id/end" app:duration="300"> <OnSwipe motion:dragDirection="dragUp" motion:maxAcceleration="200" motion:touchRegionId="@id/frameLay" /> </Transition> <ConstraintSet android:id="@+id/start"> <!-- Ваші початкові налаштування --> <Constraint android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="56dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Constraint android:id="@+id/stories_1" android:layout_width="32dp" android:layout_height="32dp" android:layout_marginEnd="32dp" app:layout_constraintEnd_toEndOf="@id/toolbar" app:layout_constraintStart_toStartOf="@+id/toolbar" app:layout_constraintTop_toTopOf="@+id/toolbar" app:layout_constraintBottom_toBottomOf="@+id/toolbar"/> <Constraint android:id="@+id/stories_2" android:layout_width="32dp" android:layout_height="32dp" app:layout_constraintTop_toTopOf="@+id/toolbar" app:layout_constraintBottom_toBottomOf="@+id/toolbar" app:layout_constraintStart_toEndOf="@+id/stories_1" android:layout_marginStart="-16dp"/> </ConstraintSet> <ConstraintSet android:id="@+id/end"> <!-- Ваші кінцеві налаштування --> <Constraint android:id="@+id/toolbar" android:layout_width="0dp" android:layout_height="156dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Constraint android:id="@+id/stories_1" android:layout_width="32dp" android:layout_height="32dp" android:layout_marginEnd="32dp" app:layout_constraintEnd_toEndOf="@id/toolbar" app:layout_constraintStart_toStartOf="@+id/toolbar" app:layout_constraintTop_toTopOf="@+id/toolbar" app:layout_constraintBottom_toBottomOf="@+id/toolbar"/> <Constraint android:id="@+id/stories_2" android:layout_width="32dp" android:layout_height="32dp" app:layout_constraintTop_toTopOf="@+id/toolbar" app:layout_constraintBottom_toBottomOf="@+id/toolbar" android:layout_marginStart="16dp" app:layout_constraintStart_toEndOf="@+id/stories_1"/> </ConstraintSet> </MotionScene>
package com.dimonbugor.motionlayoutapp;
import android.os.Bundle;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.motion.widget.MotionLayout;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.dimonbugor.motionlayoutapp.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private MotionLayout outerMotionLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
outerMotionLayout = binding.motionLayout;
outerMotionLayout.setProgress(1);
// Додаємо TransitionListener до зовнішнього MotionLayout
outerMotionLayout.setTransitionListener(new MotionLayout.TransitionListener() {
@Override
public void onTransitionStarted(MotionLayout motionLayout, int startId, int endId) {
}
@Override
public void onTransitionChange(MotionLayout motionLayout, int startId, int endId, float progress) {
}
@Override
public void onTransitionCompleted(MotionLayout motionLayout, int currentId) {
}
@Override
public void onTransitionTrigger(MotionLayout motionLayout, int triggerId, boolean positive, float progress) {
// Не використовується в даному випадку
}
});
}
}
Jesteśmy marką wellness DTC, sprzedajemy suplementy diety na rynek USA w modelu subskrypcyjnym, a aplikacja jest asystentem, który lepiej poznaje klienta, zbiera jego dane do dalszego wysyłania powiadomień, które przypominają o przyjmowaniu suplementów (AM/PM), zaznacza przyjęcia w kalendarzu, pokazuje postęp. Aplikacja jest z gamifikacją, z osiągnięciami, spersonalizowanymi powiadomieniami push z komplementami na każdy dzień i przyjemnymi przewidywaniami (jak w ciasteczkach). Backend / dane — Firebase 1. OnboardingUżytkownik otwiera aplikację — pierwszy ekran z logo SHE·8, zdjęciem dziewczyny i tekstem „Twoje codzienne resetowanie zaczyna się od Ciebie.” Na dole przycisk „ROZPOCZNIJ”, pod nim link „Masz już konto? Zaloguj się”.2. RejestracjaPo naciśnięciu „Rozpocznij” zaczyna się ankieta z 5 krokami (Krok 1 z 5). Pierwsze pytanie: „Jaki jest Twój główny cel?” — opcje: Lepszy sen, Mniej stresu, Więcej energii (wybrane), Lepsza koncentracja. Przycisk „DALEJ” prowadzi dalej przez kroki.3. Ustawienia przypomnieńPo ankiecie użytkownik ustawia czas dwóch przypomnień — porannego (08:00) i wieczornego (20:00), z wyjaśnieniem, że aplikacja przypomni o przyjmowaniu kapsułek. Przycisk „ZAPISZ”.4. Poranny ResetEkran powitania: „Dzień dobry, Sarah ☀️”, „Dzień 8 Twojego Resetu”, ilustracja kapsułek ze szklanką wody, instrukcja przyjęcia porannych kapsułek. Przycisk „ZROBIŁEM TO ✓” — użytkownik zaznacza wykonanie.5. Późne zameldowanie / Wieczorny ResetCiemny ekran z księżycem — „Wieczorny Reset”, tekst „Czas się zrelaksować i zadbać o siebie”. Przycisk „ZROBIŁEM TO ✓”.6. Przypomnienie, jeśli pominięto wieczorne przyjęcieJeśli użytkownik zapomniał zaznaczyć, wyświetla się ekran „Hej, Sarah! ” z ikoną zmęczonej buźki, tekstem „Nie zaznaczyłeś jeszcze wieczornego przyjęcia” oraz dwoma przyciskami: „Tak, zrób to teraz” (główny) i „Później” (drugorzędny).7. Główna tablicaPo onboardingu lub logowaniu użytkownik trafia na główny ekran: „Cześć, Sarah! ”, motywująca fraza, blok „Aktualna seria — 8 dni ” oraz okrągły wskaźnik „Postęp — 80%”. Na dole dolna nawigacja: Strona główna, Postęp, Kalendarz, Ja.8. PostępZakładka „Mój postęp”: aktualna seria (8 dni), „Dni ukończone 8/10” z paskiem postępu, tygodniowy tracker (Pn–Nd z zaznaczeniami wykonano/pominięto), ogólny „Ogólny postęp — 80%”.9. KalendarzZakładka „Kalendarz”: widok miesięczny (czerwiec 2025), dni zaznaczone kolorem — wykonano (zielony), dzisiaj (niebieski), pominięto (czerwony). Użytkownik może kliknąć na konkretny dzień.10. Szczegóły dniaPo wybraniu dnia (8 czerwca 2025) otwiera się szczegółowy ekran: status porannego (08:15 ✓ Ukończone) i wieczornego (20:05 ✓ Ukończone) przyjęć, plus pole „Codzienna notatka” z osobistą notatką użytkownika.11. Twoje wynikiEkran „Twoje wyniki” — porównanie wskaźników „Przed” i „Po” (Energia, Sen, Stres) w postaci pasków postępu, które wizualnie pokazują poprawę. Przycisk „ZOBACZ MOJĄ DROGĘ”.12. MotywacjaEkran „Codzienna motywacja” z tłem zdjęcia i inspirującym cytatem: „Małe codzienne działania tworzą wielkie zmiany.”13. OsiągnięciaZakładka „Osiągnięcia”: lista zdobytych nagród (Pierwszy krok, 7 dni serii, 10 dni serii) oraz następny cel („Następne osiągnięcie — 30 dni serii”, postęp 8/30).14. ProfilZakładka „Profil”: awatar i imię użytkownika (Sarah), lista ustawień — Informacje osobiste, Przypomnienia, Powiadomienia, Subskrypcja, Pomoc i wsparcie, oraz przycisk „Wyloguj się”.
Przejdziemy przez każdy punkt. Specyfikacja techniczna dla rozwoju aplikacji mobilnej dla usługi dostawy sushi Potrzebna jest aplikacja mobilna (Android i iOS) o funkcjonalności jak najbardziej zbliżonej do strony 911sushi.com.Podstawowe wymaganiaIntegracja Pełna integracja z Poster POS. Wszystkie zamówienia powinny automatycznie trafiać bezpośrednio do Poster. Wykorzystanie istniejącej bazy klientów Poster. Automatyczne stosowanie osobistych rabatów gościa, które są już skonfigurowane w Poster.Autoryzacja użytkowników Rejestracja i autoryzacja. Logowanie za pomocą numeru telefonu (lub inny nowoczesny sposób autoryzacji). Zachowanie historii zamówień. Osobiste rabaty i promocje dla użytkownika.Menu Przegląd kategorii i produktów. Szczegółowe informacje o pozycjach. Możliwość dodawania produktów do koszyka. Wybór modyfikatorów i dodatków (w razie potrzeby).Koszyk i składanie zamówienia Wybór adresu dostawy. Zachowanie kilku adresów użytkownika. Wybór miasta. Wybór czasu dostawy lub "jak najszybciej". Wyświetlanie kosztów dostawy w zależności od strefy. Wsparcie dla stref dostawy z możliwością ich edytowania.Panel administracyjny Potrzebny jest wygodny panel admina z możliwością: edycji menu; dodawania i usuwania pozycji; zmiany cen; zmiany kategorii; zarządzania promocjami; tworzenia i wysyłania kodów promocyjnych; ustawiania limitu użycia kodów promocyjnych; przeglądania statystyk.Promocje i marketing Przewidzieć możliwość: kodu promocyjnego na pierwsze zamówienie; bonusu lub rabatu za zainstalowanie aplikacji; tworzenia kodów promocyjnych z ograniczoną liczbą użyć; masowych wysyłek kodów promocyjnych do użytkowników; przeprowadzania promocji bez konieczności aktualizacji aplikacji.Analiza Potrzebna jest szczegółowa statystyka: ogólna statystyka działania aplikacji; statystyka dla każdej pozycji w menu; konwersja użytkowników; liczba instalacji; liczba złożonych zamówień; średni koszyk; powtarzające się zakupy; analiza dostaw według adresów; wyszukiwanie 100 najpopularniejszych ulic dostawy; inne kluczowe wskaźniki do analizy sprzedaży.Informacyjne sekcje W aplikacji powinny być: linki do mediów społecznościowych; kontakty; mapa z lokalizacją lokalu; informacje o firmie; warunki dostawy i płatności.Wymagania dotyczące działania aplikacji szybka i stabilna praca; brak zawieszeń i krytycznych błędów; nowoczesny i zrozumiały interfejs; wsparcie dla aktualnych wersji Android i iOS.Design Nie ma jeszcze oddzielnego designu. Można wziąć za podstawę istniejącą stronę 911sushi.com. Wszystkie niezbędne materiały są już przygotowane: logotypy; firmowe kolory; menu; księga znaku (jeśli jest dostępna).Etapowa realizacja Rozważam etapowe opracowanie:Etap 1 podstawowa funkcjonalność; integracja z Poster; menu; koszyk; składanie zamówienia; autoryzacja; panel użytkownika.Etap 2 kody promocyjne; system promocji; analiza; statystyka; dodatkowe narzędzia marketingowe; inne funkcje, które mogą się pojawić w trakcie rozwoju projektu.Dodatkowe warunki Po zakończeniu rozwoju należy zapewnić 30 dni okresu testowego, w trakcie którego będą poprawiane ewentualne niedociągnięcia. Po pomyślnym teście - finalne rozliczenie. Ważne, aby wykonawca był gotowy na stopniowe rozszerzanie funkcjonalności, ponieważ nowe zadania mogą pojawić się w trakcie pracy. Priorytet - maksymalnie krótkie terminy realizacji bez utraty jakości. Pożądane, aby wykonawca był z Łucka, ale nie jest to warunek obowiązkowy.Proszę w odpowiedzi na zgłoszenie podać: orientacyjne terminy realizacji; koszt; stos technologii; przykłady podobnych projektów; doświadczenie w integracji z Poster POS; czy są gotowi pracować etapowo; czy zapewniają wsparcie gwarancyjne po uruchomieniu.
Cel: stworzyć APK dla Androida lub Firestick, zainstalować na telewizorze i z komputera uruchamiać wideo, aby na wszystkich telewizorach pokazywało to samo wideo. Będzie stosowane w klinikach do wyświetlania określonych wideo na telewizorach. Również mieć playlisty, aby każdy określony telewizor pokazywał tylko wybraną playlistę. Program powinien pobierać wideo na urządzenie, a nie streamować je, tym samym oszczędzając internet i zasoby. Przy aktualizacji playlisty program zaktualizuje się i będzie pokazywał nowe wideo.