This is while another image sheet with a lower number of frames in in another part of the program has very good quality in the simulator and the physical phone.
This is a sheet image that looks good:
Looks like @ldurniat beat me to it, but some explanation.
You won’t see this directly unless you write shaders, but when looking up pixels in a texture you basically provide coordinates like x / width and y / height, numbers that usually lie between 0 and 1.
Mobile hardware is supposed to allow increments of 1 / 1024 in that range to be exactly represented. (See the bit with mediump and FP Precisionon the right side of page 3, here if interested.)
Anything else gets rounded. This isn’t too bad if the denominators are close. But you can imagine with x / 9600…
Texture memory usage is calculated as width * height * 4 / 1024^2 where width and height are rounded up to the nearest power of two value, i.e. 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, etc. If you have an image that is 1025 pixels wide, it gets treated as 2048.
Your sheet is 300x9600, so it gets treated as 512x16384, which adds up to 32MB. You should ideally try to stick to images/sheets that are no larger than 2048x2048 (16MB), because otherwise you may encounter OutOfMemoryError on some Android devices. You can use large heap to bypass that limit, but it isn’t encouraged.
Unfortunately, I am a beginner in this field and I did not understand much from your guidance. Anyway, thank you for guiding me and introducing me to new topics.