рдбреНрд░реЙрдмрд▓ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдЕрдиреБрдХреНрд░рдо

JPEG рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП Apple рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рдорд╛рди "рдмрд╛рдЗрдХ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╣рдорд╛рд░реЗ рдореЛрдмрд╛рдЗрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдордиреЗ рд╣рдерд┐рдпрд╛рд░ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХреЛ рдПрдХ рд╕реНрдерд┐рд░ рдЪрд┐рддреНрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрд╣ рд╕рдордЭрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХрд▓рд╛рдХрд╛рд░ рд╕реБрдВрджрд░ рдПрдирд┐рдореЗрд╢рди рдЦреАрдВрдЪреЗрдВрдЧреЗ, рд╢рд╛рдпрдж 3 рдбреА рдореЗрдВ рднреА, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рд╣реБрдЖ рдФрд░ рд╣рдореЗрдВ 256x256 рдХреЗ рд╕рдВрдХрд▓реНрдк рдореЗрдВ 1-1.5 рд╕реЗрдХрдВрдб рдХреА рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓реВрдк рджреА рдЧрдИред рдЖрдИрдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдареАрдХ рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдореБрдЭреЗ MediaPlayer рдФрд░ SurfaceView рдХреЗ рд╕рд╛рде рд▓рдбрд╝рдирд╛ рдкрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ "рдЕрдирд╛рдбрд╝реАрдкрди" рдорд┐рд▓рд╛ - SurfaceView рдХреА рд╕рд╛рдордЧреНрд░реА рдореВрд▓ рджреГрд╢реНрдп рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдЪрд▓реА, рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдард╣рд░рд╛рд╡ рдерд╛, рдЖрджрд┐ред

рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдПрдирд┐рдореЗрд╢рди рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдирд┐рдореЗрд╢рдирдбреНрд░рд╛рдПрдмрд▓ рдХреЗ рд▓рд┐рдП xml рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди 15 рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рдерд┐рдпрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ 5000+ рдлреНрд░реЗрдо рдХрд╛ рдХрдЪрд░рд╛ рдмрд┐рди рдкреНрд░рддреНрдпреЗрдХ 10-15 kbред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдирд┐рдореЗрд╢рдирдбреНрд░рд╛рдПрдмрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреНрд╡рд░рд┐рдд рд╡рд┐рдзрд┐ рдереАред

рд╕реНрдкреНрд░рд┐рдЯ рд╢реАрдЯ


рдХрд┐рд╕реА рднреА рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд┐рдирд╛, рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рдирдХреНрд╢рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди 1-2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдореВрд▓ рд╡реАрдбрд┐рдпреЛ рдХреЛ ffmpeg рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

ffmpeg -i gun.avi -f image2 gun-%02d.png

рдпрджрд┐ 32 рд╕реЗ рдЕрдзрд┐рдХ рдлрд╝реНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдлрдкреАрдПрд╕ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -r 25 рдпрд╛ -r 20 рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред 32 рдлреНрд░реЗрдо рдХреА рд╕реАрдорд╛ 8192 рдкрд┐рдХреНрд╕рд▓ рдХреЗ рдЕрдзрд┐рдХрддрдо рдЙрдЪрд┐рдд рдХреНрд╖реИрддрд┐рдЬ рдЪрд┐рддреНрд░ рдЖрдХрд╛рд░ рд╕реЗ рд▓реА рдЧрдИ рд╣реИред рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡реНрдпрд╡рд╕реНрдерд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 1-1.5 рд╕реЗрдХрдВрдб рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдпрд╣ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд┐рдЦрд░рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ:



рдореИрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Zwoptex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ , рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдорд╛рди рдЙрдкрдХрд░рдг, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдХрд░реЗрдЧрд╛ред



рдПрдХ рдкрд┐рд╕реНрддреМрд▓ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдХрд╛рд░ рдореЗрдВ 257kb рдХреА рдкреАрдПрдирдЬреА рдлрд╝рд╛рдЗрд▓ рдФрд░ 8192x256 рдХрд╛ рдПрдХ рд╕рдВрдХрд▓реНрдк рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 7424x256 рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдФрд░ рдЯрд╛рдЗрдиреАрдкреАрдПрдирдЬреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж , рдпрд╣ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рд╣рд╛рдирд┐ рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдХрд░ 101kb рд╣реЛ рдЧрдпрд╛ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рдорд╛рдореВрд▓реА рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде JPG рдореЗрдВ рднреА рд╕рд╣реЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ 50-70kb рддрдХ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде .MP4 рдореЗрдВ рдореВрд▓ рд╡реАрдбрд┐рдпреЛ рд╕рдорд╛рди 100kb рд▓реЗрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкреАрдПрдирдЬреА рдПрдирд┐рдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдореВрд▓ рд╡реАрдбрд┐рдпреЛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2-3 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред



рдиреЗрдЯрд┐рд╡ рдПрдирд┐рдореЗрд╢рдирдбреНрд░рд╛рдЗрд╡


рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдкрд░ рд╢рд░реНрдд рд▓рдЧрд╛рдИ рдЧрдИ рдереА рдХрд┐ Bitmap.createBitmap рдПрдХ рдирдИ рддрд╕реНрд╡реАрд░ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореМрдЬреВрджрд╛ рдПрдХ рдХрд╛ рд╕рдмрд╕реЗрдЯ:

рд╕реНрд░реЛрдд рдмрд┐рдЯрдореИрдк рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдмрд╕реЗрдЯ рд╕реЗ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдмрд┐рдЯрдореИрдк рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдбрд┐рдЬрд╛рдЗрдирд░ рддрд╕реНрд╡реАрд░ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдлреНрд░реЗрдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдирд┐рдореЗрд╢рдирдбреНрд░реИрдмрд▓ рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдирд╛рдо рд╕реЗ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ R.drawable рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред *

 public class AssetAnimationDrawable extends AnimationDrawable { public AssetAnimationDrawable(Context context, String asset, int frames, int fps) throws IOException { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Config.RGB_565; // AG: use 16-bit mode without alpha for animations this.bitmap = BitmapFactory.decodeStream(context.getResources() .getAssets().open(asset), null, options); int width = bitmap.getWidth() / frames; int height = bitmap.getHeight(); int duration = 1000 / fps; // AG: note the little gap cause of integer division. // ie duration would be 33 for 30fps, meaning 990ms for 30 frames. for (int i = 0; i < frames; i++) { Bitmap frame = Bitmap.createBitmap(bitmap, i * width, 0, width, height); addFrame(new BitmapDrawable(frame), duration); } } } 


рдПрдХ рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдирд┐рдореЗрд╢рдирдбреНрд░рд╛рдЗрд╡ рдХреА рддрд░рд╣:

  AnimationDrawable animation = new AssetAnimationDrawable(getContext(), "movies/gun.jpg", 28, 25); animation.setOneShot(false); previewImage.setImageDrawable(animation); animation.start(); 


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд▓рд┐рдВрдХ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдЫрд╡рд┐, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдирд┐рдХрд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЕрдЧрд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдбреНрд░реЙрдмрд▓ рд╕реЗ рд╕реАрдзреЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ рдХреЛ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдп рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреЛ рдбреНрд░рд╛ рд╡рд┐рдзрд┐ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдХреНрд╖рд╛ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдореВрд▓ рдПрдирд┐рдореЗрд╢рдирдбреНрд░реИрдмрд▓ рдХреЗ рд╕рдорд╛рди рд░рдирдиреЗрдмрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред

  @Override public void draw(Canvas canvas) { canvas.drawBitmap(m_bitmap, m_frameRect, copyBounds(), m_bitmapPaint); } @Override public void run() { long tick = SystemClock.uptimeMillis(); if (tick - m_lastUpdate >= m_duration) { m_frame = (int) (m_frame + (tick - m_lastUpdate) / m_duration) % m_frames; m_lastUpdate = tick; // TODO: time shift for incomplete frames m_frameRect = new Rect(m_frame * m_width, 0, (m_frame + 1) * m_width, m_height); invalidateSelf(); } scheduleSelf(this, tick + m_duration); } public void start() { run(); } public void stop() { unscheduleSelf(this); } public void recycle() { stop(); if (m_bitmap != null && !m_bitmap.isRecycled()) m_bitmap.recycle(); } 


рд░рди () рд╡рд┐рдзрд┐ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд▓рдЧрд╛рддреА рд╣реИред рджрд┐рдП рдЧрдП рдХреЛрдб рдХреА рд╕рдЯреАрдХрддрд╛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдлреНрд░реЗрдо рдХреЗ рдЖрдВрд╢рд┐рдХ рд╕рдордп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЯрд┐рдХ - m_lastUpdate рдЕрд╡рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 1ms рдХрдо рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рдерд╛, рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрдХреНрд╖рд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреЗрд╕реНрдЯ 2 рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХреЛрдб: paste2.org/p/2240487

рдореИрдВ рд░реАрд╕рд╛рдпрдХрд▓ () рдкрджреНрдзрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ m_bitmap рдХреЛ рд╕рд╛рдл рдХрд░рддреА рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реНрдЯреЛрд░ рдореЗрдВ рдЦрд░реАрдж рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдПрд╕реЗрдЯрдЯрд╛рдЗрдорд┐рдореЗрд╢рди рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдореЗрдореЛрд░реА рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВред

рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖


рдмреЗрд╢рдХ, рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрджрд░реНрд╢ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ рдФрд░ рдмрдбрд╝реЗ рдПрдирд┐рдореЗрд╢рди рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрдпрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреГрд╢реНрдп рд╡реГрджреНрдзрд┐ рдФрд░ рджреГрд╢реНрдп рдмрдЧ рдХреЗ рдмрд┐рдирд╛ред

рд╡рд┐рдкрдХреНрд╖:


рдкреЗрд╢реЗрд╡рд░реЛрдВ:


рдкреБрдирд╢реНрдЪ


рдпрджрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЕрд▓рдЧ рд╕реЗ рдПрдХ iOS рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдореЛрдиреЛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ GUI рдореЗрдВ рдЫреЛрдЯреЗ рд╡реАрдбрд┐рдпреЛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдореЛрдиреЛ рдкреНрд░рд▓реЗрдЦрди рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдБ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВред

Source: https://habr.com/ru/post/In151791/


All Articles