How to get the 3-circles overflow icon (instead of default 3 little squares overflow icon) in the Android ActionBar?
Examples - Google+ app, Twitter app
You should always make your own files, or use free ones instead. Closed source apps often don't permit you to use their images files.
When the app's images are open source,it should be safe to extract the APK of the app, and get it by youself. It's just like any Zip file.
In order to get the APK file of the app, you can use my app (available here, just choose "share" on the selected app) or any other app that can copy APK files from installed apps . It doesn't even need root for this operation.
It might be a bit different with Google, as they are probably more forgiving for such things, but it's best to not take the risk.
Related
I would like to support multiple dynamic themes for my app. At the same time, I dont want to increase my app bundle size by adding all set of icons and images. I wish, user selectively download from server during runtime.
Following are the two methods I see in stack overflow.
Make the new styles, icons and background images into separate APK and let the user download from google play and import those values during runtime.
How to release application plugin using Android Market?
Make the new styles, icons and background images into a zip file and let the user download and save it in SD card. Write a Resourse manager wrapper to parse and read values from the config file inside the zip file.
Create downloadable custom theme and apply it during run time
Option: 2 looks to be a better solution but it has set of limitations like we can set only the bg color and text color.
Could you please let me know which approach is better? Or is there any other better method.
The first method will be an effective one, Since normal users mostly prefer apps or themes to be downloaded from Play Store.
It will be easy for you also to promote your App as well as your Themes.
You can easily provide new updates for your themes and bug fixes , no need to download a .Zip file again & again.
For our case, we have decided to go ahead with below approach:
For each theme, we will create a config file, that will contain the list of configurable elements (color, icon, image) along with necessary resources (icons, images, bgimage).
We will post this in our server and allow user to browse through the list with a preview image.
If he decides to download a theme, we will download and unpack in local memory.
In our android app, all the elements(textview, imageview, listview) will contain a wrapper which will read from this config and apply before rendering.
NOTE: #4 is too much work, so we will divide all our themes to light and dark in top level. 75% of the config should come from our styles file (light or dark). Only font color, bgcolor, bgimage, iconsets will change based on the config file.
From this approach, we can easily move to the separate apk approach also.
I have a standard aplication. It uses resources - PNGs that are when programming in the DRAWABLE folder. They build up menus, buttons etc etc. ... Classic application nothing special.
And what I need to have is - "theme" support. Lets say I use this PNGs in my app:
menubutton.png
scrollbotton.png
arrwo.png
and these are in the DRAWABLE folder.
And I would like to be able to change the THEME of the app by changing this PNGs for different ones. Lets say I have PNG's with same names, but under a different url:
.../template1/menubutton.png
.../template1/scrollbotton.png
.../template1/arrwo.png
and than I have a another "template"
.../template2/menubutton.png
.../template2/scrollbotton.png
.../template2/arrwo.png
IMPORTANT: Of course all the PNGs have exactly same size, and name
So and the app shall have the functionality to download this PNGs and replace the ones that are currently in use. The important point is that the additonal PNGs from different templates HAVE to be availiable online - I dont want to ship the app with many templates that would not be used.
Can you please confirm this can be done and that it should not be a problem?
The Drawable resources are packaged in to the application and cannot be modified. You idea of using an SD card will work (or you can use the applications sandboxed directory), you just need to manually load the png resources (ex. myImageView.setBackgroundBitmap(...); [pseudo-code]).
As a note: If I ever open an application that immediately tells me to wait since it is downloading resources, I will force-close it and uninstall. Applications on Android, iOS, Windows, etc. should work right away without the need to download more resources. If you want a default "theme" then package it with the app, don't make the user download it (which will cause problems if the user is on mobile networks or doesn't have an internet connection when they open the app)
I'm just wondering how the following scenario can be solved:
I want to write a very simple app for my daughter. The app displays 4 colored fields on the activity and through speech output says something like "tap green". She should then tap the green field to get positive feedback. So far, so easy.
I then thought it might be nice if the app would also "grow" as she grows older. Maybe later I want to have a game mode where I display animals, numbers, vehicles, etc., so it would be nice if I could have something like "Shape sets" - basically a set of images along with a description of what the app should say for each image. Also easy enough - all you need is a set of images and an XML file describing the images.
BUT
I'd like to be able to install these "Shape sets" as additional APKs later on, so that I don't have to modify the app every time. I'd like to install the APKs, so that the contents are added to a specific sub folder on the SD card, into which my app looks to enumerate available "Shape sets".
If I ever published the app to the Play Store, other people should also be able to download the "Shape sets" I create (no need for user contributions, though).
Is that possible? If so, what would I have to do to have the Android OS "copy" the contents of an APK to a specific folder (lets say "/TapGame/Shape Sets/Animals") on the SD card? Or is there even another way of achieving what I want that I didn't think of?
The term "plugin architecture" just came to my mind as I wrote the question. Searching using that term I found this question: Extend my android app in different APK
It seems to provide a solution to my problem - I'll investigate this further, but please feel free to suggest other possible solutions!
Is that possible?
Um, sure.
If so, what would I have to do to have the Android OS "copy" the contents of an APK to a specific folder (lets say "/TapGame/Shape Sets/Animals") on the SD card?
Android won't do any of that. You have to do that. You would have to detect that a "shape set" APK was installed (either watching for package-installed broadcasts, scanning all installed apps for ones that seem to be a "shape set", etc.). Then you would have to arrange to copy whatever you wanted to wherever you wanted it, either by:
Asking the "shape set" app to do it (e.g., send a command to some IntentService), or
Using createPackageContext() and trying to do the copying from your main app
Or is there even another way of achieving what I want that I didn't think of?
Um, just use ZIP files that your app downloads itself from a well-known location. That corresponds to Dave Smith's final paragraph of his answer on the question you just linked to in your edit.
Or, just update the main app. I'm not quite certain what effort you think that you are saving otherwise.
Or, just keep the content online, using a Web service to indicate the available "shape sets" and downloading them as needed (with optional caching).
Fascinating question. If you really want to go for plug-ins then OSGi would probably be the way to go, but it's a lot of work to get to know and to use and seems like overkill in this case.
I don't know how your shapes are defined, but they are probably each defined in a separate file-set, providing the shape (maybe a png or jpg?) as well as the audio-file that will be used as a command for this shape. If the folder in which these file-sets are stored is fixed (TapGame/Shape Sets/...) the app could scan the folder each startup and the views could be generated accordingly (in this case, the activity cannot be build entirely in the XML-File, but must be partially done programmatically).
The Plugin-Aps would be rather easy. They are an apk which includes the file sets (jpg and mp3 or whatever). Started once they deposit all these files into the specified folder (they probably check before if these files exist) and then the apk can shut down again and be uninstalled.
on the next startup the Tap Game App would find the new symbols and include them into the game.
This seems rather straight forward to me. Another way would be to actually store the shapes and audio files on the internet and with each start of the App check if the number of shapes and audio-files has changed and create local copies of new ones. This would mean no downloads of apks... probably a more usual approach to the issue.
I am very interested to hear what you make of it, seems like a different approach then the norm, which is always cool to see.
I want to add a feature on my app to let users give a feedback on data. (for example to report errors or mistakes).
Is there a standard icon for it?
please, visit your android-sdk-* folder, there should be default set of icons and pictures in the ./platforms/android-XX/data/res/drawable-Xdpi/ where "XX" and "X" stand for your android version and screen size. all the standard icons are there.
There are a few system icons whose filenames match 'feedback', but none of them look appropriate to me.
Best I could find is "ic_menu_report_image.png".
I've been using "ic_menu_start_conversation.png".
Whether it’s useful for your app mainly depends on the iconset you’re already using. In a chat-app for example, this icon would be a poor choice :)
Note: this icon is marked as protected. You'll have to copy the images to your source manually.
Because these resources can change between platform versions, you should not reference these icons using the Android platform resource IDs (i.e. menu icons under android.R.drawable). If you want to use any icons or other internal drawable resources, you should store a local copy of those icons or drawables in your application resources, then reference the local copy from your application code. In that way, you can maintain control over the appearance of your icons, even if the system's copy changes.
I've got an Android app that can be themed using a set of images. It lets users select which style of images to use, but in order to keep the main app small and let users download/manage only the additional image sets that they would use I want to offer add-on downloads (like extensions).
What's the best way to do this? Thanks in advance.
Well, Handcent, a mms app that I use, had all their themes on the market. What I guess they did is just keep the file structure the same and when the user downloaded the apk data folder, it was placed into the already existing apk tree of the primary Handcent application. I have no idea if that's how they did it, but I can't see why it wouldn't be feasible.