Skocz do zawartości

Znajdź zawartość

Wyświetlanie wyników dla tagów 'aktywność' .



Więcej opcji wyszukiwania

  • Wyszukaj za pomocą tagów

    Wpisz tagi, oddzielając je przecinkami.
  • Wyszukaj przy użyciu nazwy użytkownika

Typ zawartości


Forum

  • Społeczność android.com.pl
    • Regulaminy Forum
    • Przywitaj się!
    • Android.com.pl
    • Konkursy
    • OFF-Topic
  • Android
    • Nowości i plotki
    • FAQ Android
    • Android 10
    • Android 9.0 Pie
    • Android 8.0 Oreo
    • Android 7.0 Nougat
    • Android 6.0 Marshmallow
    • Android 5.0 Lollipop
    • Android 4.4 KitKat
    • Archiwum Android
    • Software PC
  • Gry i Aplikacje
    • Aplikacje Android
    • Gry Android
    • Poszukiwania gier i aplikacji
    • Porównania gier i aplikacji
    • Android Wear - Smartwatch
    • Modyfikacje Wizualne
    • Download
    • Multimedia
  • Co i gdzie kupić?
  • Programowanie
  • Modyfikacje Android OS
  • Elektronika
  • Honor
  • Google
  • HTC
  • LG
  • Samsung
  • Sony
  • Motorola
  • Huawei
  • Xiaomi / MIUI
  • OnePlus
  • Lenovo
  • Asus
  • myPhone
  • Pozostałe marki

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Od tej daty

    Do tej daty


Ostatnia aktualizacja

  • Od tej daty

    Do tej daty


Filtruj po ilości...

Znaleziono 6 wyników

  1. Coders Lab

    Fragmenty - podstawowe informacje

    Słów kilka na temat fragmentów w androidzie… Pamiętam, że gdy zaczynałem swoją przygodę z androidem i dotarłem do tematu fragmentów czułem się lekko zagubiony. „Po co to komu, skoro mogę sobie zrobić równie dobrze drugą aktywność i mieć tam wszystko to co miałbym w fragmencie” - tak sobie wtedy myślałem. Później gdy już zacząłem rozumieć fragmenty, to wszystko chciałem robić na fragmentach - ale tak totalnie wszystko, wszystko. Z perspektywy czasu widzę, że nie była to wcale tak cudowna droga jak na początku mi się wydawało. Trzeba odnaleźć złoty środek między tym co warto zrobić fragmentem, a tym co powinno zostać aktywnością. Kończmy ten wstęp i zaczynajmy. Czym jest fragment? Fragment jak sama nazwa wskazuje to „fragment” (czyli kawałek) aktywności - właściwie to widok z logiką przyczepiany do aktywności. To co odróżnia fragment od widoku, to fakt że fragment może posiadać swoją własną logikę. Aktywność może posiadać jednocześnie wiele fragmentów. Zaprezentuję teraz kilka przykładów z fragmentami w różnych kombinacjach. Będę do ich oznaczenia używał 2 kolorów: żółtego oraz zielonego. Na zamieszczonym wyżej obrazku widzimy aktywność, która posiada jeden fragment (żółty). Jak widać po lewej stronie na górze znajduje się navigation drawer, po kliknięciu na element z jego menu zapewne nastąpi podmiana fragmentu. Jest to w mojej opinii najczęstsze wykorzystanie fragmentu, rozwiązanie to pozwala na szybką i wygodną nawigację po aplikacji. Nie ma tu jednak niczego czego nie bylibyśmy w stanie wykonać bez tworzenia nowej aktywności. Idźmy dalej. Widzimy teraz sytuację, w której to na ekranie pojawiają się jednocześnie 2 różne fragmenty (żółty oraz zielony). Możesz powiedzieć „No ale po co? Dodatkowe komplikacje tylko…wszystko mógłbym mieć w jednej aktywności.” - w zasadzie masz rację. Możesz wszystko wrzucić do jednej aktywności, ale pomyśl jak „przyjemnie” będzie Ci się wtedy dokonywało zmian w takim klocu po 2, 3 lub 4 miesiącach. Jeden wielki widok, logika zbita na siłę do kupy w jednym miejscu - nadal uważasz, że fajniej będzie mieć to w jednej aktywności? Idź dalej. A co Ty na to? Masz tutaj 2 identyczne fragmenty (żółty 1 oraz żółty 2). Pewnie powiesz, że mogę sobie przecież zrobić widok i dodać go w po prostu layoucie i wyjdzie na to samo. No w zasadzie tak, ale co z kodem związanym z logiką? Wszystko do aktywności? Chcesz później pracować z takim klocem? Przychodzi mi do głowy jeszcze jedno - skoro one są takie same, to czy nie zduplikujesz kodu? A jeśli nawet nie to co sądzisz powiesz wtedy o jego czytelności i złożoności? Pomyśl też o nazwach zmiennych i pól - bt_power_a, bt_power_b, chyba nie chcesz zrobić tego sobie i swoim kolegom ?Idźmy dalej. Wow! Czy to fragment nad fragmentem? Tak! To dokładniej fragment żółty nad zielonym, a w realnym życiu najczęściej to po prostu Twój monit, który stworzyłeś dziedzicząc po klasie DialogFragment, która to z kolei dziedziczy po klasie „Fragment”. Powiem więcej, każdy wcześniej pokazany żółty fragment to właśnie ten fragment - w końcu dziedziczy po fragmencie, więc możesz go używać jako zwykły fragment, jak i jako monit z racji takiej, że dziedziczysz po DialogFragmencie. Co się dzieje z używanymi fragmentami? To zależy od tego czy odkładasz je na stos czy nie. Jeśli nie to sprawa jest prosta - są niszczone, jeśli tak otwarcie kolejnego fragmentu następuje „nad” obecnym fragmentem. Stos pozwala stworzyć historię odwiedzanych przez użytkownika fragmentów, możesz do tego zaimplementować własną nawigację umożliwiającą wędrowanie po historii po przez naciskanie przycisku „cofnij”. Cykl życia fragmentu vs cykl życia aktywności Fragmenty posiadają swój własny cykl życia, jednak z racji tej że są wyświetlane w aktywności to cykl ten jest ściśle powiązany z cyklem życia aktywności - czyli w aktywności poszczególne fragmenty mogą umrzeć, a aktywność dalej będzie żywa, ale odwrotna sytuacja nie może nastąpić. Myślę, że poniższy wykres (pochodzący ze strony Google, z działu o fragmentach) ładnie to wyjaśnia. Kiedy nie warto używać fragmentów Na to pytanie nie ma prostej odpowiedzi. To trzeba wyczuć kiedy warto ich używać, a kiedy wprowadzą tylko więcej zamieszania - bo tak się może zdarzyć. Jeśli nie planujesz tworzyć mocno rozbudowanego menu, lub będziesz potrzebował umożliwić innym aplikacją otwarcie Twojej aplikacji na konkretnej aktywności to sens używania fragmentów zanika. Problem gubienia fragmentów Gdy pracowałeś z DialogFragmentem zapewne zauważyłeś, że po obrocie ekranu dialog tej przestaje poprawnie reagować na zdarzenia - np. OnClick nie działa. Wynika to z faktu, że klikając w przycisk odnosisz się do niewłaściwego dialogu. Ten który stworzyłeś przed obrotem ekranu przestał już istnieć, w jego miejsce pojawił się nowy. Aby uniknąć sytuacji, w której przestajesz mieć kontrolę nad dialogiem powinieneś używać sensownych tagów (do utworzenia dialogu wymagane jest podanie taga). Umożliwiają one odnalezienie dialogu i ustawienie komunikacji na niego. Wszystko o czym mówię sprowadza się do tej jednej linijki kodu: val uninstallPackageDialog: UninstallPackageDialog? = fragmentManager!!.findFragmentByTag(UninstallPackageDialog.TAG) as UninstallPackageDialog? w Javie wyglądałoby to tak: uninstallPackageDialog = (UninstallPackageDialog) getSupportFragmentManager().findFragmentByTag(UninstallPackageDialog.TAG); if(uninstallPackageDialog != null){ ... } Dajcie znać czy Wam się podobało i napiszcie o czym jeszcze chcielibyście poczytać Specjalnie dla Android.com.pl Łukasz Bednarczyk
  2. Chciałbym zapytać o wasze opinie, doświadczenie ze śledzeniem aktywności na zegarkach. Sam używam endomondo + google fit, ale połączenie to ma wady: 1) Teoretycznie endomondo ma wszystkie co potrzeba do śledzenia aktywności z zegarkam, jednak nie zawsze to działa... Podczas śledzenia zapisywany jest GPS i puls, tyko że zapis GPS czasami się zawiesza. Po jakimś czasie zazwyczaj zaczyna znów działać, jednak powstaje spora dziura. Po analizie zapisu okazuje się że również puls nie jest wtedy zapisywany. Dodatkowym minusem jest brak możliwości zmiany typu treningu bezpośrednio z zegarka. 2) Synchronizacja endomondo z google fit to jakieś jaja... Jazda na rowerze o długości 22km w google fit pojawia się jako 2,5 km! W podglądzie mapy widać około połowę trasy, a w podsumowaniu jest napisane 2,5km. Dodam, że trasa na mapie miała co najmniej 10km, nie wiem skąd wziął te 2,5km... To nie jest odosobniony przypadek, inne aktywności pomimo że mają znaczek symbolizujący że dane pochodzą z treningu endomondo - mają długości wyssane z palca, zapis GPS też nie zawsze pokrywa się z tym z endomondo... Nie wspominam już o tym że nic nie jest przesyłane w drugą stronę, czyli z google fit do endomondo. Dla przykładu fajnie byłoby gdyby kroki zapisywały się w endomondo, gdyż sam google fit ma bardzo skąpe możliwości analizy. Co innego? Google Fit (bez endomondo) - niestety nie, gdyż: nie zapisuje wcale pulsu (serio?...), można wybrać tylko z 3 podstawowych aktywności. Runtastic - tylko bieganie, brak zapisu pulsu. Runkeeper - brak zapisu pulsu, działa chyba tylko z telefonem. Strava - tylko rower i bieganie (ale taka charakterystyka aplikacji), brak zapisu pulsu. Z tego co widzę tylko endomondo z definicji jest ok (w praktyce są problemy ze śledzeniem i synchronizacją z google fit), chyba że jest coś innego? [Dodano: 20 marzec 2016 - 10:27] Normalnie brak słów... Wchodzę na google fit, patrzę, a tam: - usunęło mi cała aktywność ze środy - w czwartek usunęło mi wszystkie aktywności a dodało bieganie trwające 24h - w sobotę usunęło wszystko a dodało marsz 24h... Dodatkowo: - próbowałem dodać ręcznie kroki przebyte w środę (dane z moto body) - nic się nie dodaje - próbowałem też usunąć bieg z czwartku i dodać kroki, efekt? ignoruje liczbę kroków którą wpisuje, uzupełniając aktywność chyba losowymi danymi... nawet jak klikam edytuj, poprawiam i zapisz to pojawiają się jakieś absurdalne dane...
  3. czesc, szukam aplikacji zliczajaca uruchomienia telefonu, aktywność (jakas podstawowa przynajmniej). pozdrawiam
  4. Cześć, szukam czegoś w czym mógłbym trzymać telefon podczas biegania, jazdy na rowerze lub innej aktywności typu np. snowboard. Niestety kieszeń odpada bo za bardzo ją obciąża podczas ruchu. Czy ktoś się spotkał z praktyczną opaską na ramię lub jakimś typem saszetki przyczepianej do pasa?
  5. BrowarPrezes

    Problem z przełączaniem aktywności

    Witam. Jestem poczatkujacym programista na androida. przejzalem juz wiele stron i tutoriali ale nigdzie nie moglem znalezdz rozwiazania mogego problemu. Mam problem z uruchomieniem Aktywnosci2 za pomoca Aktywnosci1. obie aktywnosci w oddzielnych projektach dzialaja poprawnie ale gdy chce je polaczyc pojawia sie problem. PIerwsza główna aktywnosc to zbior kilku widoków ktore przelaczam gdy klikam na odpowiednie przyciski. Druga aktywnosc wyswietla maly obszar obrazu o duzych rozmiarach z mozliwoscia przesuwania nie po tym obrazie (wykonalem to z pomoca tutorala znalezionego w internecie). Mysle ze problem tkwi w pliku AndroidManifest.xml . <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="browar.proj" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /> <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true"> <activity android:name=".Przedwonik_po_SiedlcachActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="MapaPalacActivity" android:label="@string/app_name"> <intent-filter> <action android:name="browar.proj.intent.action.PokazMapaPalac" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest> Najprawdopodobniej blad tkwi w tym miejscu : <action android:name="browar.proj.intent.action.PokazMapaPalac" /> <category android:name="android.intent.category.DEFAULT" /> a tak je przelaczam: case R.id.buttonPalacMapa: startActivity(new Intent(Przedwonik_po_SiedlcachActivity.this, MapaPalacActivity.class)); break; Glowna aktywnoscia jest Przedwonik_po_SiedlcachActivity i w chwili klikniecia na przycisk o id=R.id.buttonPalacMapa chcialbym aby uruchomila sie aktywnosc MapaPalacActivity. Tak sie jednak nie dzieje tylko wyskakuje blad: The application (...) has stopped unexpectadly. Please try again. a tutaj jest kod Aktywnosci ktora obsluguje to duze zdjecie(przypominaj ze w odzielnym projekcie dziala wszystko poprawnie. Nawet jesli ustawie ja jako glawną aktywnosc to tez uruchamia sie poprawinie): public class MapaPalacActivity extends Activity { // Physical display width and height. private static int displayWidth = 0; private static int displayHeight = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // displayWidth and displayHeight will change depending on screen // orientation. To get these dynamically, we should hook onSizeChanged(). // This simple example uses only landscape mode, so it's ok to get them // once on startup and use those values throughout. Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); displayWidth = display.getWidth(); displayHeight = display.getHeight(); // SampleView constructor must be constructed last as it needs the // displayWidth and displayHeight we just got. setContentView(new SampleView(this)); } private static class SampleView extends View { private static Bitmap bmLargeImage; //bitmap large enough to be scrolled private static Rect displayRect = null; //rect we display to private Rect scrollRect = null; //rect we scroll over our bitmap with private int scrollRectX = 0; //current left location of scroll rect private int scrollRectY = 0; //current top location of scroll rect private float scrollByX = 0; //x amount to scroll by private float scrollByY = 0; //y amount to scroll by private float startX = 0; //track x from one ACTION_MOVE to the next private float startY = 0; //track y from one ACTION_MOVE to the next public SampleView(Context context) { super(context); // Destination rect for our main canvas draw. It never changes. displayRect = new Rect(0, 0, displayWidth, displayHeight); // Scroll rect: this will be used to 'scroll around' over the // bitmap in memory. Initialize as above. scrollRect = new Rect(0, 0, displayWidth, displayHeight); // Load a large bitmap into an offscreen area of memory. bmLargeImage = BitmapFactory.decodeResource(getResources(), R.drawable.testlargeimg); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // Remember our initial down event location. startX = event.getRawX(); startY = event.getRawY(); break; case MotionEvent.ACTION_MOVE: float x = event.getRawX(); float y = event.getRawY(); // Calculate move update. This will happen many times // during the course of a single movement gesture. scrollByX = x - startX; //move update x increment scrollByY = y - startY; //move update y increment startX = x; //reset initial values to latest startY = y; invalidate(); //force a redraw break; } return true; //done with this event so consume it } @Override protected void onDraw(Canvas canvas) { // Our move updates are calculated in ACTION_MOVE in the opposite direction // from how we want to move the scroll rect. Think of this as dragging to // the left being the same as sliding the scroll rect to the right. int newScrollRectX = scrollRectX - (int)scrollByX; int newScrollRectY = scrollRectY - (int)scrollByY; // Don't scroll off the left or right edges of the bitmap. if (newScrollRectX < 0) newScrollRectX = 0; else if (newScrollRectX > (bmLargeImage.getWidth() - displayWidth)) newScrollRectX = (bmLargeImage.getWidth() - displayWidth); // Don't scroll off the top or bottom edges of the bitmap. if (newScrollRectY < 0) newScrollRectY = 0; else if (newScrollRectY > (bmLargeImage.getHeight() - displayHeight)) newScrollRectY = (bmLargeImage.getHeight() - displayHeight); // We have our updated scroll rect coordinates, set them and draw. scrollRect.set(newScrollRectX, newScrollRectY, newScrollRectX + displayWidth, newScrollRectY + displayHeight); Paint paint = new Paint(); canvas.drawBitmap(bmLargeImage, scrollRect, displayRect, paint); // Reset current scroll coordinates to reflect the latest updates, // so we can repeat this update process. scrollRectX = newScrollRectX; scrollRectY = newScrollRectY; } } } Z gory dziekuje wszystkim za pomoc;). PS. Prosze nie zwracać uwagi na załączoną miniature.
  6. hopbit

    Cykl życia aktywności.

    Myślę, że to pytanie do bardziej doświadczonych programistów tej platformy Jedyną metodą, która ma 'zagwarantowane wykonanie' zanim aktywność przejdzie do stanu w którym może być zabita w każej chwili jest metoda onPause(). Można ją wykorzystać np. do zapisu zmienionych danych lub aktualnego stanu. Pozostałe metody - onStop i onDestroy, z tego co wyczytałem i zrozumiałem do tej pory nie mają 'gwaracji' wykonania'. Moje pytanie - co można umieścić w tych metodach, do czego mogą się przyda ć, skoro nie wiadomo nawet, czy kod w nich zawarty zostanie w ogóle wykonany? Jakoś nie potrafię sobie tego wyobrazić. Do tej pory zajmowałem się głównie aplikacjami sieciowymi typu klient-serwer i może z tego względu nie potrafię wyobrazić sobie dobrego zastosowania dla tych metod? Mam takie wrażenie, że one są bo są... Moje (niewielkie) doświadczenie w temacie: Dotychczas stworzyłem X prostych aplikacji (głównie na podstawie tutoriali i książek) oraz pracuję nad jedną własną. Podejrzewam, że z upływem czasu, podczas pisania kolejnych aplikacji i dalszego czytania kodu innych aplikacji (dostępnych chociażby na stronach projektu Android) znajdę odpowiedź na moje pytanie. Ale liczę, że może ktoś nakieruje mnie wcześniej na włąściwą odpowiedź, bądź kod aplikacji, gdzie będzie można zobaczyć 'jak to jest zrobione' i mi się 'rozjaśni'
x