Autor Téma: Rozlišení aplikace  (Přečteno 12685 krát)

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #15 kdy: 06-01-2016, 11:56:35 »
Hned s novým produktem nějaký 'koníčkář' vydá návod o 1000 stranách.  ;)
No ja nevim, jestli treba Jon Skeet je nejaky konickar...

Chtěl jsem tím především říci, že logicky za tím musí stát ebm.

Offline chaloup

  • Plnoletý
  • ***
  • Příspěvků: 113
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Rozlišení aplikace
« Odpověď #16 kdy: 06-01-2016, 13:47:52 »
Flame o tom jak kvalitně/nekvalitně je FMX napsáno/navrženo je na internetu spousta a je pravdou, že marketingový slogan je něco jinýho než realita.
Jestliže budu navrhovat aplikaci v XCode(Apple) přes absolutní souřadnice, tak dojedu na úplně stejný problémy, který tady řešite, je to bad application design

Základní poučky pro všechny co chtějí dělat mobilní vývoj:
- přestaňte navrhovat formuláře v absolutních souřadnicích, zapomeňte, že něco takovýho existuje!
- používejte layout(y), první komponenta na formuláři musí být nějaký kontainer (TLayout, TTabControl) s Align := Client http://docwiki.embarcadero.com/RADStudio/Seattle/en/FireMonkey_Layouts_Strategies
- používejte vlastnoti jako jsou Align, Margins, Padding http://docwiki.embarcadero.com/RADStudio/Seattle/en/Arranging_FireMonkey_Controls
- jestliže položíte na button obrázek nezapomeňte u něj vypnout HitTest
- stáhněte si samples http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Seattle/
- samples k uživatelskýmu rozhraní http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Seattle/Object%20Pascal/Multi-Device%20Samples/User%20Interface/

Pozor
- FMX TPanel funguje jinak než komponenta stejného jména z VCL, ekvivalent panelu z VCL je spíše TLayout
- Kreslit nebo resizovat formuláře v absolutních souřadnicích z důvodu toho že FMX do toho ještě nějak montuje DPI zařízení moc nefunguje
- Livebinding jsou děsně žravý, kdo je zvyknutejz VCL, že hodí na form grid a přimontuje k tomu Query s 100.000 záznamy a Delphi si načtou jen první stránku co je vidět ... tak takhle to tady nefunguje, všechno se to stěhuje do paměti...
- ShowModal funguje jinak než ve VCL http://docwiki.embarcadero.com/RADStudio/Seattle/en/Using_FireMonkey_Modal_Dialog_Boxes

FMX je jiná knihovna, je tam jiná logika, funguje to jinak

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 103
  • Karma: 2
Re:Rozlišení aplikace
« Odpověď #17 kdy: 06-01-2016, 19:20:47 »
Excellent
Rated 1 time
Stejně pořád nechápu, proč si vytvořím Form s rozměry 720 x 1280 a celý se nevejde na displej mobilu, který toto rozlišení má ...
 
:-(


Offline raul

  • Hrdina
  • ****
  • Příspěvků: 435
  • Karma: 15
    • Verze Delphi: FPC :D
Re:Rozlišení aplikace
« Odpověď #18 kdy: 06-01-2016, 19:22:36 »
Palec nahoru
Lazarus 1.6.3:), FPC, Intel/Arm, Windows/Linux, (občas Delphi)

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1173
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Rozlišení aplikace
« Odpověď #19 kdy: 06-01-2016, 20:04:19 »
Stejně pořád nechápu, proč si vytvořím Form s rozměry 720 x 1280 a celý se nevejde na displej mobilu, který toto rozlišení má ...

Existují věci jako DPI, scale apod. ... já si s tím nehrál, ale zřejmě absolutní pozicování a nějaké interní zvětšování v tomto hraje roli.
Když už jsi nestudoval žádnou knihu, budeš muset jít cestou pokus-omyl, jak bylo zmíněno ;)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3001
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Rozlišení aplikace
« Odpověď #20 kdy: 07-01-2016, 08:07:49 »
Včera jsem se trochu více hrabal ve FMX v XE8. Upozorňuji, že mi nešlo o tvorbu aplikace pro mobil, ale jen posouzení, jak složité je v tom programovat a zda je to alternativa k VCL. Zajímala mne práce se základními vlastnostmi komponent pro GUI, pak jsem se díval, jak pokročila práce na Stringridu, MediaPlayeru,...Výsledek? Zlaté Borland Delphi7.

No to by mne zajimalo. Puvodne jsem se na to chtel vykaslat, ale opravdu mne namichnulo to s tim MediaPlayerem. Pokud bych mel neco rict, tak media jsou ve FMX o svetelne roky nekde jinde.
StringGrid jsem si ted zkusil a funguje - co s tim máš za problém - svěř se. Jinak StringGrid na mobilech neni to prave orechove, ne ze by nefungoval, ale uzivatele predpokladaji ListView, pripadne http://delphi.cz/post/XE7-MultiView.aspx. Případně http://delphi.cz/post/Nahodne-vykriky-52.aspx TksListview
Embarcadero MVP - Czech republic

Offline chaloup

  • Plnoletý
  • ***
  • Příspěvků: 113
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Rozlišení aplikace
« Odpověď #21 kdy: 07-01-2016, 10:34:53 »
MediaPlayer z FMX je blbej, protože co vím, tak NEUMÍ přehrát zvuk ze streamu, umí jen ze souboru. Nikde jsem nenašel, jak ho přemluvit, aby přehrál zvuk ze streamu.
Něco jsem zkoušel a mám cca 5.000 zvuků, který jsem chtěl uložit do db a přehrávat to z paměti... nejde, resp. já nevím jak
kouknu do zdrojáku, jak to dělaj to přehrávání a vykuchám to do vlastní komponenty (až budu mít čas)

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #22 kdy: 07-01-2016, 12:43:44 »
Otázka:
Stejně pořád nechápu, proč si vytvořím Form s rozměry 720 x 1280 a celý se nevejde na displej mobilu, který toto rozlišení má ...
 
:-(



Možné odpovědi:

Citace
Citace: Radek Červinka  04-01-2016, 14:44:00


    ... já chápu FMX jako přímého nástupce VCL, s tím, že je základní princip stejný a je rozšířen (upraven) ...




Existují věci jako DPI, scale apod. ... já si s tím nehrál, ale zřejmě absolutní pozicování a nějaké interní zvětšování v tomto hraje roli.

Já osobně bych na Tvém místě zkusil zjistit, jaké rozlišení 'vidí' Delphi. Chci tím říci, zda ve FMX není náhodou stejný problém, jaký byl ve VCL.

Offline chaloup

  • Plnoletý
  • ***
  • Příspěvků: 113
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:Rozlišení aplikace
« Odpověď #23 kdy: 07-01-2016, 12:50:10 »
Teoreticky (jsem to nezkoušel) je možné dát na form TScaledLayout - tomu nastavit Align na client a naházet to tam x,y a při vykreslení by se to mělo nějak přepočítat.
Ale když originál návrh bude 4:3 a zobrazím to na 16:9, tak to bude zdeformovaný.

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #24 kdy: 07-01-2016, 12:59:02 »
Pro Radka: Co se týče MediaPlayeru. Zkusil jsem naprogramovat něco vlastního, díval do nápovědy, zkusil jsem dema a co se týče kodeků a jiného, je to stále stejné 'Urob si sam'.
Co se týče Stringridu, tak má představa je něco ve stylu StringAlignGrid či HyperGrid pro D7.
Když jsem chtěl text v buňkách zarovnávat do středu, musel jsem si udělat vlastní proceduru, když jsem chtěl uložit a načíst, musel jsem udělat vlastní proceduru, když jsem chtěl autosize, zase jsem musel udělat něco vlastního. Třeba to tam někde je dobře skryto pod nějakým názvem, který se mi nepodařilo najít. Nevím. Rozhodně nějakou nativnost jsem u toho celkem postrádal. Tak v čem je to tak zásadně lepší? Źe by v tom, že je tam přednastaveno 100 řádků?  ??? 100 řádků pro mobil?
« Poslední změna: 07-01-2016, 13:00:51 od našinec »

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 103
  • Karma: 2
Re:Rozlišení aplikace
« Odpověď #25 kdy: 07-01-2016, 23:04:32 »
Zkoušel jsem na mobilu s rozlišením 1280 x 720 zadat  screen.width a screen.height a ukázalo mi to 360 x 640 .

To je asi ten důvod proč se mi aplikace s rozlišením 1280 x 720 nevejde na displej.

Nevíte někdo, jak nastavím, aby se aplikace spustila v rozlišení 1280 x 720 ?
děkuji

Offline < z >

  • Administrátoři
  • Guru
  • *****
  • Příspěvků: 1173
  • Karma: 44
    • Verze Delphi: 7, 2010
Re:Rozlišení aplikace
« Odpověď #26 kdy: 08-01-2016, 09:22:26 »
Šak ti to vysvětluju celou dobu, že v tom hraje roli DPI a scale.
Nemůžeš natvrdo nastavit požadovanou velikost, protože taková není.
Android i iOS reálné hodnoty dopočítávají. FMX vykresluje podle netu ve 160ppi.

Google:
Kód: [Vybrat]
uses
  FMX.Helpers.Android, Androidapi.JNI.Util;
 
var
  Disp: JDisplayMetrics;
  NativeClientHeight: Single;
begin
  Disp := GetJDisplayMetrics;
  NativeClientHeight := ClientHeight * Disp.density; //<----use this

Canvas.SetMatrix(TMatrix.CreateScaling(1 / Canvas.Scale, 1 / Canvas.Scale) * Canvas.Matrix);

A přitom asi nemusíš do velikosti vůbec zasahovat
http://stackoverflow.com/questions/22009508/firemonkey-form-scaling-to-all-mobile-device
« Poslední změna: 08-01-2016, 09:24:31 od < z > »

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #27 kdy: 08-01-2016, 12:45:12 »
Kdyby to bylo ve VCL a windowsu, tak by to bylo jasné. Je tam nastavené 200% zvětšení pro text a další položky s manifestem pro winXP.  :)
Mám pocit, ale to by spíše věděl někdo, kdo se mobilnímu vývoji věnuje, že v loni došlo k nějákým změnám v manifestu pro android.

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #28 kdy: 08-01-2016, 14:10:16 »
Pro  AlienStar: Používáš někde 200% zvětšení písma, atd? Myslím tím, jak to, kde tvoříš, tak cílovou destinaci? Napadlo mne možné řešení.

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Rozlišení aplikace
« Odpověď #29 kdy: 08-01-2016, 14:39:58 »
Raul,AlienStar: Nebudu čekat na půlnoc, až AlienStar něco sesmolí.  ;)
Když si uvědomíme, že Delphi používá XP manifest a až při kompilaci teprve přiřazuje správný manifest, tak řešení je nabíledni:Chyba není na výstupu, nýbrž na vstupu.