Buborékhatás - jegyzetfüzetek
Amikor írsz egy alkalmazást, azt szeretném, ha a felhasználó élvezni fogja a munkát. A felhasználó szereti, ha az alkalmazás előre láthatóan és természetesen viselkedik. Nemrégiben az egyik hobbi projektemben felmerült a feladat, hogy egyik komponens formáját megváltoztassuk a másikra. A Swing-ben ez egyszerűen megtörtént, a legfontosabb, hogy ne felejtsük el újra érvényesíteni a hívást, de a hatások időnként nagyon szórakoztatóak. A "homlokán" hozott döntés vizuálisan nem túl kellemes. Az egyik komponens drasztikusan elhajlik, a második élesen megjelenik a semmiből. Nincs köztük vizuális kapcsolat. Ez a viselkedés természetellenes, ezért a gazdag alkalmazásokban ilyen hatásokat kerülni kell.
Itt van egy viszonylag egyszerű, de sokkal érdekesebb megoldás ugyanannak a problémának.
A komponens nem azonnal eltűnik, de sötétebbé válik, és elveszíti élességét (elmosódott hatás). Annak érdekében, hogy a felhasználó megérti, hogy már nem tud vele dolgozni. Ezután a "régi" komponens alatt egy újabb fokozatosan megjelenik.
Nem fogom leírni a végrehajtás minden részletét: a forráskód mindent elmond nekem. Röviden, ez történik, amikor a felhasználó rákattint a "Test Fade" gombra.
Először létrehoz egy BufferedImage-t a forrásösszetevő méretéhez (van egy táblázatom). Ezután a komponens a képen rajzolódik. Tehát van egy "képernyőkép" az összetevő. A képet feldolgozza a Gaussian Blur szűrő (kölcsönadtam a konverziós kernel létrehozásának kódját a Filthy Rich Clients-ből). A kép elmosódott.
Amikor elkészült a kép, a valós komponenst egy képre cseréljük. A képernyőkép alatt a "cél" komponens kerül felhelyezésre (az, amelyet meg kell jeleníteni). Ezután az alfa-összetett Clear gombbal "gyűlöl" a képen látható köröket. Ezzel párhuzamosan "sötétítjük" a képet barna színnel (újra használjuk az alfa-kompozitot, ezúttal SrcOver).
Így jön ki a kívánt hatás. Ugyanezzel a technikával, akkor kap további érdekes hatásokat, például, ha növeljük az átláthatóságot minden lépésnél a kép, hanem a „vygryzaniya” körök, akkor kap egy klasszikus fade-in lecsengéséig.
Ui Vettem az első komponenseket, amelyek kézbe kerültek. Ne figyeljen a funkciókra.