I have two images I wish to merge together into one, the image that will become the background is configured so that the section I wish to overlay the second image on is coloured.
Is there any way to dynamically generate a composite of two images overlaid over a specific section?
Assuming the images have a least a little bit of alpha, you will have to use the Canvas class to draw the bitmaps. Here's a link to the method documentation.
Related
I wanna create a custom view with three circle images view using native android. Now I can create one circle image view using CircleImageView from hdodenhof. I wonder if anyone can tell me which way is better to put three circles like the following pic. Thanks.
You could, as you suggest, build a custom view from three CircleImageViews and an appropriate layout.
However, I suspect that you would have difficulty getting the circles to layout in the manner shown in your sample.
I'm fairly certain that this would be next to impossible with RelativeLayout, though you may be able to accomplish this with creative use of one of the other layouts.
Other options include:
Merge the 3 images in a graphics editor, and then create a custom view using that.
Merge the 3 images as above, and just use it in an ImageView
Create a custom view from a Canvas, and draw the images yourself, at the appropriate locations.
Which you do will probably depend on how you want the custom control to behave, including:
is any part of it to be animated?
are the 3 circles to be separately clickable?
How to use a spritesheet to put a section of spritesheet as a background image of the Buttons in Android?
Please consider me as a noob. I have just started to learn android app development.What I want is I have a spritesheet where there are several images,in that I just want to put a particular section of the spritesheet as the background image of the button rather than having image.png for each individual buttons in the app.
See this question, you can find different ways to achieve this :
Spritesheet programmatically cutting: best practices
But if you haven't a large number of images, you should cut them into drawables, it's easier for sure.
I need to put together a complete image, as seen here. Each piece of the segmented tree is an individual image, but I am unsure about how I should put the pieces together efficiently with spacing in between. I've thought about stacking the images on top of each other one at a time within a canvas, but I have my doubts as to whether this is the approach that I should take. Is there a different type of container I should use or a better method of accomplishing the same task?
EDIT: just to clarify, I need to assemble the image programmatically, beginning with the base segment and eventually ending with the top segment.
If you use a program like Gimp, you can added each image as a layer, then move the layers around correctly. I'm not quite sure how you want to represent the space between the segments, transparent?
Any way after you have your image assembled the way you want you can either merge the layers or save it to a format that will flatten out your images.
I'm not sure if you want your image to be able to stretch at all or not. If so, you can save it as a .png file and then use draw9patch or equivalent to add in stretching segments. Also I'm not sure if you have to support multiple drawable sizes, if so I have a free Android app, DP Image Calculator on Google Play that might help. Just remember start with the highest resolution and work you way down to the smallest.
Hope this helps. If you have more question let me know. Have a great day.
I am wondering what would be the best practice for android. To draw or to load an image?
For example I want to have a circle that is green filled with the text 25 in it.
-Should I have it in .PNG image file and just load it to the imageview placeholder when I need it?
OR should I load it in Java (by determining the position in java and load it from my res folder)?
OR Should I draw it (draw a circle, fill color, add text field inside)?
On another note, to have a checkmark, what do advise me to do?I don't even know how to draw that
I really need your help in this
Thank you so much
I'd actually argue that there is a single right answer. You should use a shape with a set color and text view inside it. It is easy to do what you've described in xml, see: Oval Gradient in Android for an example (there are a number if you google for android shapes). This will be less CPU/memory intensive than loading a bitmap, and more importantly, it will work for and look good on every screen size. As an added bonus of the user has changed their default font sizes, a textView/shape can respect that and a static image can not. Just set the background of your TextView to be the shape drawable (either in xml or programatically).
To get a bitmap to look good on multiple devices (a must for android development) , you will need a number of different versions of the same bitmap at different resolutions (XHDPI, HDPI, MDPI... etc).
Check marks are harder because they don't conform to a standard shape. Those you probably will have to make pngs for.
It depends on what you want to do.
Rendering a bitmap will be faster, but you cannot manipulate it after it is drawn.
So, for your case, you have a green circle with 25 written it. Do you also need a green ball with 23 and another with 24 in it? What about other colors?
It really depends on the amount of variation you need. At a certain point the overhead of using dozens of images will not be worth the evert of drawing to a canvas. Or, depending on how complex the images are, it will be.
The question is not "Which is better?", but instead, "Which is better for what I need to do?"
I'm not an expert on Android development but after seeing your question I have done a bit of reading and came across this article on displaying images with android that is relevant and includes some code to possibly help you out. http://www.javacodegeeks.com/2011/07/android-game-development-displaying.html
As for your image of a check mark, why dont you just go into photoshop or paint and use the line tool to draw a checkmark and then fill it in with color and save it as a .png perhaps?
I have some images that I want to put on top of each other on random order.
If it possible using one ImageView or do I need to create multiple image views based on number of images?
You don't completely specify what you want.... if you want the images to be placed in different positions (in the X and Y axis), meaning that while watching the photo on the top you can see part of the other images, then you have to create different ImageViews, or drawing them on a canvas (I think this one is much better).
If the images are just one on top of the other (hiding the one on the bottom), you just have to use one ImageView.
LayerDrawable may fit your requirement, you may refer to this post overlay two images in android to set an imageview