When I try extending the View class to a subclass that will underline portions of the text drawn by ListView, the code compiles okay but results in a runtime exception apparently due to an improper class cast. Does anyone see what I've done wrong or have suggestions about getting access to the Canvas of ListView items so portions of text can be underlined?
Here is the code, which is the Efficient Adapter View/List example from ApiDemos with an added UnderlinedView class.
I would like to draw custom images within a ListView, for this I have created a ListView and an ArrayAdapter object. I have specified that each element of the ListView will be an ImageView which is specified by an XML layout file. Now, I would like to draw a custom graphic in each cell depending upon certain paramters.
I was wondering how would I go about drawing an ached line on a canvas. If I were to continue this line it would make a perfect circle. I've got pie wedges which is close but I just want the outside of the wedge and it needs to be circular.
In my application, i've a list view, if the last visible line is truncated and I scroll down to this line, I wish that the line becomes fully visible. I have to scroll down once more for it to become fully visible.
Recently I have been having issues with viewing my email messages in the Yahoo Mail App. When I open some messages all is see is line after line of code instead of the message text. It doesn't seem to matter what the source email is (gmail, hotmail, etc). Some emails are ok some are not. Anyone else have this problem? Any fixes?
I've tried Draw!, Draw(er), and MagicMarker, but I dunno, they each have their pros and cons and can't find one that suits me well. I'm not looking for Photoshop on my phone, but something better than a colored line. So what is your best drawing app?
This is more of a question about animating than a specific problem coding. i need to fill in the broad strokes left by the research i've been doing.
What i'm trying to do:
The activity should load with only the a togglebutton visible. when the button is touched, a png will be animated to a certain position relative to the togglebutton. also, another button will slide in from off screen and slide off if/when the togglebutton is pressed again.
What i can't figure out:
I can draw an image, but only via xml. creating an imageview and setting the background programmatically does nothing.
When i draw from xml, i can't move the image when the togglebutton is pressed like i want to. when i call getPositionOnScreen() i get a null pointer, even though the complier can see i'm referring to the imageview described in both xml and in code.
I'm calling getPositionOnScreen because via xml, i have the image positioned behind the togglebutton so that it's not visible until the button has been pressed and the image starts moving. the idea is that with different screen sizes i won't know exactly where the view is until runtime. getPostionOnScreen allows me to get the coordinates of the imageview so i know where it has been positioned. when i have a start position, can tell it to "move up" on the screen from behind the togglebutton by simply adding to x or y until it's where i want.
This is the code to draw the image (inserted in the onCreate method).
This is the code i'm using to animate. when the button is clicked, it calls this method on the view from the listener.
I'm well aware that this is horribly wrong and won't work. what i need to understand is why.
I'm trying to learn about Android programming by rewriting a C app I've moved from DOS to X-windows to Windows as a learning tool. It's just a silly little app that draws symmetrical 'game of life' patterns on the screen in a kaleidoscopic fashion. It's structured so that the patterns do their own animations. I.e. there's a 'Life' class that produces the next generation and redraws itself from the center outward, inserting delays to produce a kaleidoscopic effect.
I've got it so that the patterns draw - I took the LunarLander sample as a starting point, and an drawing on a SurfaceView. But my problem is with timing the 'animations'. I'm not doing traditional animation, where I build a whole frame and then draw it, but the surface seems to want to draw itself completely on each iteration of my loop, so my inserted sleep's don't insert delay in the right places.
So my questions:
1. Is there a more direct way to write to the screen than via a SurfaceView? If I did that, would the various steps of my 'animation' occur as I drew them, producing the desired effect. 2. If such a drawing method exists, would I be wasting my time learning how to use it? 3. What's the 'standard' way to do this kind of animation?
I have to recommend just getting a book on the subject.I learned most everything off of examples and documents on the web.After several months, I finally picked up the blue book and everything I had scoured to find is clearly demonstrated in it.Look for the red book and the blue "superbible."They cover everything you need.There are also books specific to ES.Make sure to get a good 1.1 one and not a 2.0-only one.
From the JavaDoc, it said it returns 'a bitmap representing this view or null if cache is disabled'. My question is what if the View is longer than the phone screen (you need to scroll vertically), what does the bitmap return? * only the visible portion of the view * everything the view has (both visible + invisible part)
I'm trying to create on of these images, but Eclipse won't accept it once I've used the draw9patch tool. I've found other people having the same problem, and saw this comment: I discovered later that the problem I was having was caused by the image not being exactly true to the nine-patch spec as defined in the documentation. Once I fixed the image to have a clean (i.e., no gradients etc) one pixel border it was fine. "'m not much good when it comes to image design. What does this mean, how do I create my original png file to meet the specification for Nine Patch?
I am creating a custom view which has an image. The image can be of any type. What i want to achieve is that i want to draw an EditText control on top of the image so that the user can add some values to it. I am not sure how to achieve this. The onDraw control will not allow me to draw any view right? I am new to android so any help would be appreaciated.
I'm having a small problem with drawing a View offscreen to a Bitmap. The View is created using LayoutInflater.inflate(int resource, ViewGroup root) with null passed to the root parameter. The View has a fixed size (200x180 pixels). I can create a Bitmap for this View either by using the method View.getDrawingCache() or by calling View.draw(Canvas canvas) using a Canvas that in turn has a backing Bitmap. This works fine if the View doesn't change after the inflate. However, if I have a TextView inside my View that I will update, the size of the TextView is never updated regardless of what method I call on the View (requestLayout(), forceLayout() invalidate() etc.). If I display the View on screen directly, everything works fine (sizes are updated as needed, etc.). What is the correct way of drawing Views off screen and being able to update their layout when needed?
I'm trying to create a custom widget which looks lick HTML table. I chose to derive from TableLayout, which is the subclass of ViewGroup and View. What's confusing me is that the drawing I put into my override of View.onDraw did not take effect, until I moved the codes to the override of ViewGroup.dispatchDraw. I know dispatchDraw is a good place to draw something, but I'm just wondering why there's such difference in my practice?
I'm trying to build a custom clock view in Android. See image http://twitpic.com/1devk7.So far to draw the time and hour markers I have been using the Canvas.rotate method to get the desired effect. However, notice that it is difficult to interpret the numbers in the lower half of the clock (e.g. 6 or 9?) because of the angle in which they are drawn.When using drawText, is it possible to draw the text at 45/90/180 degrees so that all text appears upright when my onDraw method has finished?
I wrote a reading software. I implemented the page turning effect when user tap the screen to turn to next/pre page. The display is ok on G1 (320X200 size) but it can not works well on Droid(480*854 size), the font looks a litter fuzzy, not clear as G1. I explain my codes for page turning:
1) create a canvas A
2) create bitmap.
3) set bitmap on canvas A
4) draw the new page content on canvas A
5) the current showing page has been saved in bitmap before since we do from step 1) to setp 4),
6) In order to implement the turning effect of scrolling from left to right, I draw the old bitmap part and draw the new bitmap part until the whole new bitmap has been drawn. all of bitmaps are drawing by canvas.drawBitmap() in onDraw() function.
7) when step 6) is done, it means the new page has been shown on screen, and the bitmap has been saved to use in next page turning.
The above is the whole actions for my page turning. On G1, no problem. But on Droid phone, the font is not clear, I tried if I directly draw text by canvas in OnDraw() not through bitmap, It is ok, but it can not implement the page turning effect that I need. I don't know why, could you please help me to take a look and tell me where is wrong or miss some steps?
I've got a game, a custom View class draws my gameboard. I'm thinking of drawing some elements on a separate layer above the gameboard. I could do this in the View's canvas code, but since they won't change frequently, was thinking of introducing a frame layout to display this top layer.I'm not sure which route to take, the only reason I wouldn't do the FrameLayout is because I'm not sure if it has an impact on battery life. Everytime onDraw() is called, the system probably has to do an alpha composition of the two layers. Is that more battery consuming than drawing the elements from that layer myself in my canvas on every frame? Hard to answer since I'm not sure how complex the drawing will be yet, any general opinions?
Anyone have any idea why when i run this for loop to add a graphic to my screen, the first iteration coordinate get discarded if the loop runs more than once?
For Example, I have a column of 7 graphics in a graphic array list, when I remove a graphic the code below runs to insert a new graphic, and it works perfectly if there is only 1 graphic removed/added. The problem is when I remove 2 or more graphics from the column, the first 1 that is readded get written to x0 and y0 instead of x64 y64 but the second graphic is correctly added to x64 y128. I am using OnDraw canvas to draw.