Hey Guys -
This is probably answered somewhere, but for some reason search isn't working at the moment.
So, first, keep in mind that I'm NOT an experienced developer - I have ONE app on the Play Store, and I learned both Java and Android through trial and error and more Google/DuckDuckGo searches than *they* are probably even aware of. When I first released my app, v2.3 or some such was the latest out. :laugh:
So now I'm working on bringing it into the new generation, and playing with fragments.
I've seen two main approaches with them - the first seems to be creating the fragments on the fly in code, as needed. The second seems to be adding them to your main layout (which creates them at app startup).
I decided to go with option #2 - for a couple reasons. (First, it was easier for me to get started by putting them in the XML layout, and because I had some problems trying to get the code to work. Second, one of the fragments uses the Google Maps Fragment, which apparently causes some issues adding/removing the fragments programmatically.(which was causing the errors just mentioned. Third, using the Location service, one of my fragments can read the GPS status from the other, without having to start the service up, wait for a location, and then shut it down.)
And so far, loading the fragments this way seems to work well. Only have one 'glitch' I'm wondering if I'm stuck with, or can work around -
When the app loads, I get the main activity layout, and the screen jumbles all around as the three or four fragments are loaded. Is it possible to somehow hide the messy UI display as fragments are loaded? If I create a splash activity, the fragments don't get loaded until the main activity layout is shown anyways, so that doesn't seem to help the problem any.
Any thoughts are welcome!
-Mike.,
coyttl said:
Hey Guys -
This is probably answered somewhere, but for some reason search isn't working at the moment.
So, first, keep in mind that I'm NOT an experienced developer - I have ONE app on the Play Store, and I learned both Java and Android through trial and error and more Google/DuckDuckGo searches than *they* are probably even aware of. When I first released my app, v2.3 or some such was the latest out. :laugh:
So now I'm working on bringing it into the new generation, and playing with fragments.
I've seen two main approaches with them - the first seems to be creating the fragments on the fly in code, as needed. The second seems to be adding them to your main layout (which creates them at app startup).
I decided to go with option #2 - for a couple reasons. (First, it was easier for me to get started by putting them in the XML layout, and because I had some problems trying to get the code to work. Second, one of the fragments uses the Google Maps Fragment, which apparently causes some issues adding/removing the fragments programmatically.(which was causing the errors just mentioned. Third, using the Location service, one of my fragments can read the GPS status from the other, without having to start the service up, wait for a location, and then shut it down.)
And so far, loading the fragments this way seems to work well. Only have one 'glitch' I'm wondering if I'm stuck with, or can work around -
When the app loads, I get the main activity layout, and the screen jumbles all around as the three or four fragments are loaded. Is it possible to somehow hide the messy UI display as fragments are loaded? If I create a splash activity, the fragments don't get loaded until the main activity layout is shown anyways, so that doesn't seem to help the problem any.
Any thoughts are welcome!
-Mike.,
Click to expand...
Click to collapse
what do you mean with "jumbles "? Loadinganimation? If not, use LoaderManager.LoaderCallbacks
Could you please post your layout file? The one you put the <fragment> tags into.
mynote said:
what do you mean with "jumbles "? Loadinganimation? If not, use LoaderManager.LoaderCallbacks
Click to expand...
Click to collapse
More like you can see each of the fragments load, in order, overlaying each other (especially in cases where I don't specifically set the background, leaving it transaprent, I guess..) In code, then as the first 'fragment' is selected, my code hides the unused one, 'cleaning up' the display. I can't grab a screenshot, since it happens in under half a second.
nikwen said:
Could you please post your layout file? The one you put the <fragment> tags into.
Click to expand...
Click to collapse
Oh, sure -
Code:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">
<fragment
android:id="@+id/fragment_map"
android:name="com.tsqmadness.bmmaps.views.MapPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
<fragment
android:id="@+id/fragment_stations"
android:name="com.tsqmadness.bmmaps.views.StationsPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_stations -->
</fragment>
<fragment
android:id="@+id/fragment_sheet"
android:name="com.tsqmadness.bmmaps.views.DatasheetPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
</FrameLayout>
I could go back to creating them all in code, but.. before I do that was wondering if there was anything I overlooked.
Thanks!
-Mike.
coyttl said:
More like you can see each of the fragments load, in order, overlaying each other (especially in cases where I don't specifically set the background, leaving it transaprent, I guess..) In code, then as the first 'fragment' is selected, my code hides the unused one, 'cleaning up' the display. I can't grab a screenshot, since it happens in under half a second.
Oh, sure -
Code:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">
<fragment
android:id="@+id/fragment_map"
android:name="com.tsqmadness.bmmaps.views.MapPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
<fragment
android:id="@+id/fragment_stations"
android:name="com.tsqmadness.bmmaps.views.StationsPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_stations -->
</fragment>
<fragment
android:id="@+id/fragment_sheet"
android:name="com.tsqmadness.bmmaps.views.DatasheetPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
</FrameLayout>
I could go back to creating them all in code, but.. before I do that was wondering if there was anything I overlooked.
Thanks!
-Mike.
Click to expand...
Click to collapse
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
nikwen said:
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
Click to expand...
Click to collapse
i prefer (this is what i do) replacing it after everything has been loaded. Means, use a framelayout or whatever and just replace it with the fragments, ist not that hard.
i can Show you an example if you want to
nikwen said:
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
Click to expand...
Click to collapse
I'll give that a try! Essentially, I just want to hide all the apparent 'loading' of widgets until everything IS loaded, to clean up the launch process. (Obviously, this action does NOT happen if the app is in the background and brought forward - only on fresh launches - i.e. After being killed, or phone reboot.)
I hadn't thought of creating a fourth view in front of everything to hide them - I will try that. I don't see why it wouldn't work. I'll let you know tomorrow!
mynote said:
i prefer (this is what i do) replacing it after everything has been loaded. Means, use a framelayout or whatever and just replace it with the fragments, ist not that hard.
i can Show you an example if you want to
Click to expand...
Click to collapse
I wouldn't mind seeing some code, either. (Since I 'taught myself', I really do enjoy seeing other ways - usually better and quicker - at doing things. :laugh
Thanks guys -
Mike.
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
---------- Post added at 09:44 PM ---------- Previous post was at 09:43 PM ----------
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
mynote said:
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
---------- Post added at 09:44 PM ---------- Previous post was at 09:43 PM ----------
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
Click to expand...
Click to collapse
I just saw these exercises: http://www.vogella.com/articles/AndroidFragments/article.html#tutorial_dyanmicfragments
Did I miss anything?
nikwen said:
I just saw these exercises: http://www.vogella.com/articles/AndroidFragments/article.html#tutorial_dyanmicfragments
Did I miss anything?
Click to expand...
Click to collapse
No. That's true. You just have to use some way to get informed when the cursorloader is finished.
This should be that hard. Use a "Harcoded" Loading layout instead of Fragment and as soon as you get a notify (broadcastreceiver, fragmentmanager, whatever) then you "visible" replace the Fragment
mynote said:
No. That's true. You just have to use some way to get informed when the cursorloader is finished.
This should be that hard. Use a "Harcoded" Loading layout instead of Fragment and as soon as you get a notify (broadcastreceiver, fragmentmanager, whatever) then you "visible" replace the Fragment
Click to expand...
Click to collapse
If I ever need this, I'll be able to do that. Just wondering where the code was. :laugh:
Okay, so you guys lost me going back and forth in the last few messages there. (Not your fault, again, remember, I taught myself and am slow. )
However, an update on some things I tried:
Adding a view to overlay the other fragments does NOT work, unfortunately:
If added in the layout before the fragments, the view is created first, but then is underneath the fragments, defeating the purpose, because of Z-Order.
If the layout view is AFTER the fragments, it's now on top of the other fragments, BUT, because the other fragments are loaded first, you still see the stacked and loading views of the fragments before the final overlay view pops into the window.
My next thought was to mark the containing views IN each fragment's layout set to android:visibility="None". This didn't work either, as I had to set them Visible before using the FragmentManager.beginTransation() to enable/disable the fragments. Setting them all to 'visible' cause the loading animations to not appear, but all three fragments end up visible for a split second before the Transaction hid/showed the right fragments.
I looked at - am still looking at - that link with the code, but I think because one of my fragments HAS a fragment IN it (sub Fragment?) it will cause the same problems I ran into at the start of the project when I tried to create the fragments programatically.
I have one more little trick to try with the visibility of the views in the fragments, before I jump back to getting it all done up in code to avoid the ugliness.
Thanks guys -
Mike
Hi everyone! I'm new in this forum but I have to admit that I have read it a couple of times to see great stuff!
I read this thread because I had the same question. The answers here are the first thing in mind when I had the problem. As I searched the web, I found a library called Progress Fragment by Evgeny Shishkin.
https:/ /github.com/johnkil/Android-ProgressFragment (I'm new so I can't post links for now, so you can copy/paste it )
One of the main features is that is compatible with devices using Android 1.6 and up!
It's really easy to use!
I hope this helps someone.
Guys -
Thanks for your help.
After working around, here's what I ended up with -
I can't create and attach (.replace) the fragments programatically, since one of the fragments has a MapFragment inside of it. (NOT a MapSupportFragment). This causes the .replace to need some overriding to handle a 'sub-fragment'.
Seeing as I found a good way to handle it - I decided not to override the .replace or the fragment manager. Instead, my main activity (posted earlier in the thread), I made all three fragments visibility:gone. This allows the main activity to launch to a blank (or set background) screen briefly before loading up the first fragment and hiding the others.
When I call my fragmentmanager() to show/hide the fragments, I simply set the visibility to 'view' at the same time. Seems kinda clunky, but it works well.
Thanks!
-Mike.
Related
Hi,
Im just getting into Android development and picking up pace slowly. Getting confused how people are getting settings style menus with the appropriate colour Summary Line while adding icons for Stars and Checkboxes etc to highlight and tick.
Anyhoo, I have a TextViews inside a LinearLayout inside a ScrollView, seems to work OK. I use SetText to set the Text on the TextViews and I create everything at run time instead of through the XML files.
But the application I have is a polling type application and I need to repopulate the TextViews and redraw the ScrollView in the same position that the user scrolled to previously.
Im accutely aware of problems using ScrollTo after you've used SetText, so I found the following code:
Code:
sView.post(new Runnable() {
public void run() {
sView.scrollTo(0, iTop);
}
});
It works, but there's a screen flicker where it first draws the screen in its normal position then sets the scrollTo.
What is the best way of achieving this, or am I doing everything completely backwards and most normal people wouldn't have this kind of problem?
Thanks
Simon
It sounds more like you might want to consider using a listview instead. It was designed to contain several child views and scrolls and updates seamlessly.
Hi,
Thanks for the reply. Perhaps I am a bit too much of a beginner.
I seem to be favouring TableLayout so that I can display tabular data and have columns resize correctly and have the data presented OK.
I think that's why I went with updating everything at design time because I have a variable number of rows that can be added. IIUC, variable rows (in an XML file) I think can only be created using ListView, but of course a TableRow needs a TableLayout as a parent.
Here is the idea...
Code:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:text="@+id/TextView01" android:paddingRight="5px" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="@+id/TextView02" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</TableRow>
</TableLayout>
The code I have for TableRows is not dissimilar to, http://en.androidwiki.com/wiki/Dynamically_adding_rows_to_TableLayout
But of course using setText means I cannot then scrollTo
Duh.
First learning curve mastered.
You only need to add views to containers etc the first time you display the screen.
You can update the text in the views later on without affecting the screen position.
I like this.
hey guys,
I have a little problem with my app.
This is what my app does (should do):
I have a SurfaceView which shows the camera "preview".
On top of this surfaceview I want to display a map, so the user can see where he is. So I want sort of a minimap.
To display the fragment/GoogleMap object on top of the surface, I use the following main_activity.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/SurfaceViewLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
<fragment
android:id="@+id/Map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="com.google.android.gms.maps.MapFragment" />
</RelativeLayout>
My problem is: The app shows the surface and the map, but I can only see the +/- Buttons of the map. The map is not visible. See attachments for a screenshot.
As you can see, the buttons are displayed, but not the map
Does anyone has an idea?
regards,
v1r0x
You prob either have the wrong api key, didnt declare in the manifest, or have god awful service haha.
95% chance it has to do with the api key though, so double check your have the v2 key, and have it in the right spots.
---------- Post added at 05:19 AM ---------- Previous post was at 05:16 AM ----------
You prob either have the wrong api key, didnt declare in the manifest, or have god awful service haha.
95% chance it has to do with the api key though, so double check your have the v2 key, and have it in the right spots.
EDIT: well maybe it could be a weird layout thing, so to check, take out the framelayout and run it. If the map pops up, its something else.
Oh sorry, I forgot to mention, that without the framelayout or if I define
Code:
android:layout_above="@+id/map
in the FrameLayout, I see the map. So, it's not an api key error.
What I don't understand is, that the buttons (+/- in the screenshot) pop up, but not the map
But thanks for your answer
Try setting a width and height for the fragment and maybe exchange their order in the layout. Something like 64dp. (Just for testing)
I think that one is drawn over the other so that you do not see the other one. The buttons are drawn on the top of everything.
nikwen said:
Try setting a width and height for the fragment and maybe exchange their order in the layout. Something like 64dp. (Just for testing)
Click to expand...
Click to collapse
The map is 200dp x 200dp
nikwen said:
The buttons are drawn on the top of everything.
Click to expand...
Click to collapse
Didn't know that. Thanks.
v1r0x said:
The map is 200dp x 200dp
Didn't know that. Thanks.
Click to expand...
Click to collapse
Have you tried changing their order?
The second view should be drawn behind the first one if nothing else is specified.
I thought the second view will be drawn on top of the first
Now it looks as it should
There are some new bugs, but I think they are related to the new layout.
Thank you, guys!
v1r0x said:
I thought the second view will be drawn on top of the first
Now it looks as it should
There are some new bugs, but I think they are related to the new layout.
Thank you, guys!
Click to expand...
Click to collapse
Great. :good:
I'm essentially trying to create a MadLibs app for my kids. I'll type in the text of the books they already have and they can play with it in the car. But I'm a noob and I haven't done much else other than the first few simple apps in tutorials - my brain got tired trying to figure out sqlite stuff, so this all went on the backburner and now here I am again giving it another effort.
So I was thinking something ridiculously simple, like just having a textview string of the first part of a sentence, then an edittext with a hint set for the type of word to fill in, followed by the rest of the sentence in another textview string. Lather, rinse, repeat. Easy, right?
I can't seem to figure out how to get the objects to flow properly in the layout... First problem is that the edittext is gigantic compared to the textview. I could probably figure that one out easy enough, but my second problem prevents me from actually seeing the effects of my changes, and that problem is that the text doesn't flow onto the next line.
I've tried linearlayout and relativelayout, but I'm turning here for some guidance before I waste countless hours. Should I just build each paragraph (textview) as a single string comprised of other strings and edittext variables?
Any help would be great appreciated. And remember: go easy on me.
Here's my current activity_main.xml:
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textBody01"
android:weight="1" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_adjective"
android:weight="1" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textBody02"
android:weight="1"/>
</LinearLayout>
etnpnys said:
I'm essentially trying to create a MadLibs app for my kids. I'll type in the text of the books they already have and they can play with it in the car. But I'm a noob and I haven't done much else other than the first few simple apps in tutorials - my brain got tired trying to figure out sqlite stuff, so this all went on the backburner and now here I am again giving it another effort.
Click to expand...
Click to collapse
Could you post a quick picture (just a rough one in paint or something) showing the desired layout ?
Absolutely. I'll mock one up and get it on here shortly.
Sent from my SPH-L710 using Tapatalk
PicomatStudios said:
Could you post a quick picture (just a rough one in paint or something) showing the desired layout ?
Click to expand...
Click to collapse
Here's a little bit of how I'm thinking this should work out pretty easily. In the end, I would like to have the filled-in words in bold red text and the rest of the body paragraphs as regular black text, and I would like to make the background black to hide the body of text. I would then have a button that calls a function to change the background to white to make the body text visible "onclick" -- or maybe toggle between black/white/whatever.
The first hurdle is right here with the layout. I mean, this is REALLY simple, right?
View attachment 2380717
etnpnys said:
Here's a little bit of how I'm thinking this should work out pretty easily. In the end, I would like to have the filled-in words in bold red text and the rest of the body paragraphs as regular black text, and I would like to make the background black to hide the body of text. I would then have a button that calls a function to change the background to white to make the body text visible "onclick" -- or maybe toggle between black/white/whatever.
The first hurdle is right here with the layout. I mean, this is REALLY simple, right?
View attachment 2380717
Click to expand...
Click to collapse
Maybe not that simple
As I understand it you want the text to flow continuously left-to-right, top-to-bottom, a bit like floating CSS layouts ?
That is you might want it to do...
Mary had a [edit text] lamb. Its
fleece was white as snow.
Where that's 2 TextViews with an EditText between them ?
You will struggle to do that on Android, since there is not built in concept of 'flow' as you may be imagining.
The closest you will get is a RelativeLayout but you'll have to work hard to line the views up correctly.
You could try something like this, or maybe this. The second one links here where there is somebody's FlowLayout code towards the end of the page. I haven't tried it but it looks close to what you need at first glance. The concept appears to be a ViewGroup which calculates where its children should be and positions them accordingly.
You get my ideas exactly. I'll look into those! Much appreciated!
Sent from my SPH-L710 using Tapatalk
Just to button this up, I wanted to chime in to let everybody know which direction I went.
Basically, I have a vertical linear layout comprised of:
several editText fields for user input. @hint points to strings that indicate what kind of word (noun, adjective, etc) needs to be filled in.
a "Create" button
a "Clear" button
a textView
Behind the scenes, I set a series of "sentenceFragment" variables that contain the body text. Those all end with a "[" and start with a "]" so that the filled-in words can be easily seen once the story is built. Users fill in the editText fields and click the "Create" button. When clicked, I used getText on each of the editTexts to store each as a string, then a "paragraph" variable is built from concatenating all of the sentenceFragments + editTexts, then I used setText to the textView to display the entire story below.
The "Clear" button then uses setText on the textView and the editTexts to blank them out.
So, in the end, the user is presented with stuff like:
Sometimes you just want to get a [green] car. In your search, you find several [bugs] on the seat.
Thanx for you help, everybody! Now I'm looking into putting a spinner at the top to let the user select different stories... Anybody wanna point me in the right direction there?
[Q] Beginner: Issues with canvas bitmaps, buttons, and layouts
Hi, I'm hoping people might help me with this more open-ended question. I'm fairly new to programming with little scripting experience.
My problem is that I'm cobbling code together from various separate examples, but trying to implement them into my tests, they don't seem to work together.
Let me show you what my goals are for this experiment:
1) Create Button
2) Generate Images with Button click
3) Drag Images around
So far, I've been able to do create images with drawing bitmaps using canvas and create a working button with the easy drag and drop.
My specific problem is that I can't use the Design tool to create buttons if I use the canvas method of drawing bitmaps because setContentView() needs to be on the canvas.
Here's my onCreate():
Code:
GenerateItem ourView;
Button genButton;
LinearLayout myLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ourView = new GenerateItem(this);
setContentView(ourView);
myLinearLayout = (LinearLayout)findViewById(R.id.linearLayout1);
genButton = new Button(this);
genButton.setText("Generate");
myLinearLayout.addView(genButton);
}
And related XML code from my AndroidManifest:
Code:
<LinearLayout xmlns:android="somelink"
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</LinearLayout>
Now I have two questions:
1) Am I going about this problem the correct way using a mix of Design layout tools and code created images (canvas bitmaps)?
2) Can I use canvas bitmaps with an onTouchListener as a button?
Whoaness said:
2) Can I use canvas bitmaps with an onTouchListener as a button?
Click to expand...
Click to collapse
You should use an ImageView instead. Canvas aren't Views, so they aren't managed by the Android System when an event occurs. Canvas are used, for example, to draw anything in a low-level-way (custom views, for example).
I didn't understand the first question..
Sent from my Vodafone 875
Andre1299 said:
You should use an ImageView instead. Canvas aren't Views, so they aren't managed by the Android System when an event occurs. Canvas are used, for example, to draw anything in a low-level-way (custom views, for example).
I didn't understand the first question..
Sent from my Vodafone 875
Click to expand...
Click to collapse
You might have answered my first question. I'm not sure.
I was asking whether I should stick with canvas methods and, from my limited scripting knowledge, draw a hitbox for the onTouch method to detect so I can redraw the object to the fingers position.
I can easily drag imageviews/imagebuttons around. I guess I have to figure out how to create Imageviews, though I think I seen a way to cast bitmaps into an imageview, but it never worked out for me.
Whoaness said:
You might have answered my first question. I'm not sure.
I was asking whether I should stick with canvas methods and, from my limited scripting knowledge, draw a hitbox for the onTouch method to detect so I can redraw the object to the fingers position.
I can easily drag imageviews/imagebuttons around. I guess I have to figure out how to create Imageviews, though I think I seen a way to cast bitmaps into an imageview, but it never worked out for me.
Click to expand...
Click to collapse
Uhm... so, let me know wheter I understood.
In your project you have a button that renders an image (a bitmap) wich is drawn with a canvas. But you want that this image is draggable.
Am I right?
Andre1299 said:
Uhm... so, let me know wheter I understood.
In your project you have a button that renders an image (a bitmap) wich is drawn with a canvas. But you want that this image is draggable.
Am I right?
Click to expand...
Click to collapse
Yes, draggable image button. Although I'm not sure if it needs to be a button, but I thought button properties would be appropriate for touch and dragging.
Sorry for the late reply. I was on a hiatus.
Thin ice here...
So here's an excerpt from the Android Manifest.xml of Alreader 1.7.7:
Code:
<activity android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|uiMode|screenSize|smallestScreenSize|fontScale"
android:label="@string/dialogopen_library"
android:launchMode="singleTop"
android:name="com.neverland.alr.AlReader3GridCatalog"
android:parentActivityName="com.neverland.alr.AlReader3Activity"/>
The activity "com.neverland.alr.AlReader3GridCatalog" is, as far as I can tell, what calls the Library. At least ADW Launcher thinks so, although attempting to create a shortcut fails. In fact, every activity listed for Alreader fails from outside the app as far as I can tell. I would like to be able to go straight to the Library. My reading--probably insufficient--leads me to think that "android:exportable=true" needs to be added somewhere in this mess to make that possible.
I've tried that but apktool throws out all kinds of errors when trying to recompile the app.
Am I being too simple?
nmyshkin said:
"android:exportable=true" needs to be added somewhere...
Click to expand...
Click to collapse
Make that:
Code:
android:exported="true"
You could also add your own intent filter:
Code:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Which turns it into a regular launchable app.
It also makes the android:exported="true" by default without the explicit line.
Renate NST said:
Make that:
Code:
android:exported="true"
Click to expand...
Click to collapse
OK, so that was just a stupid mistake on my part I actually did use "exported" when I tried, but apparently my apktool version was just too old. I got the app to recompile with the newest version of apktool, adding android:exported="true" to the section where the library activity is mentioned. So far, so good. Then I signed the app and it actually installed!
When I call the activity I actually get a blank screen with a little band at the top which says "Library" (android sarcasm). The menu button brings up a few items, each of which tosses me back out except for a screen formatting option: one or two columns, etc.
So...I'm guessing that more of the activities associated with the Library need the same treatment in the Android Manifest file for the whole shebang to work.
Edit: just to be a bit OCD, I added the exported phrase to each and every activity mentioned. This yields a similar result for each: a blank page with a title bar and some menu-button options that don't work. I am trying:
Code:
am start -n com.neverland.alreader/con.neverland.alr.AlReader3GridCatalog
as an example. I am wondering if the declaration of a "parent activity" in each section:
Code:
<activity android:configChanges="fontScale|keyboard|keyboardHidden|locale|navigation|orientation|screenSize|smallestScreenSize|touchscreen|uiMode"
android:label="@string/dialogopen_library"
android:launchMode="singleTop"
android:name="com.neverland.alr.AlReader3GridCatalog" android:exported="true" [B]android:parentActivityName="com.neverland.alr.AlReader3Activity[/B]"/>
has something to do with my inability to get to a specific activity from outside the app.
nmyshkin said:
I am wondering if the declaration of a "parent activity"...
Click to expand...
Click to collapse
parentActivityName really only has to do with navigation, not a real dependency.