Getting Bitmap from drawable object

by Devin Yu » Wed, 14 Apr 2010 03:03:48 GMT


Sponsored Links
 Hi all,

I got a drawable object from Res ID. But I want to know its
coresponding bitmap file.
Any body can tell me how to do it?

Thanks.

--



Other Threads

1. How to create/design downloadable skins packets for an application?

The idea is to allow users to download a skin packet from the android
market and be able to change the skin via the main application.

I assume this skin pack would contain only the layouts and res names
that I would want to overwrite from the main application.

How could I approach such project?

Thanks in advance!
-Moto
--~--~---------~--~----~------------~-------~--~----~

2. Architecting a count down timer

I am writing a timer application that counts backward from a time and
notifies when the timer reaches zero.  It is intended to allow the
user to start a timer that continues to tick and will notify them when
complete even after the activity is backgrounded.  Also, it will show
the correct in-progress countdown after the activity is re-
foregrounded.

TimerActivity.onCreate() inflates the TimerView (allowing the user to
set the time and hit the start button) and starts the TimerService.
When the start button is pressed the TimerView broadcasts a START
intent containing the number of seconds.  The TimerService contains a
BroadcastReceiver listening for the START intent.  When the
TimerService receives START it begins broadcasting a TICK intent
(containing the number of seconds remaining) every second until zero
is reached.

The TimerService looks like this.  The BroadastReceiver is inside of
the TimerService because it must set the TimerService's members.

public class TimerService extends Service
{
        private int _seconds = 0;
        private Handler _timerHandler;

        @Override
        public void onCreate()
        {
                _timerHandler = new Handler( );
        }

        ...

        public class StartListener extends BroadcastReceiver
        {
                @Override
                public void onReceive(Context context, Intent intent)
                {
                        _seconds = intent.getIntExtra( "seconds", 0 );
                        _timerHandler.postAtTime( runTimer, 
SystemClock.uptimeMillis() +
1000 );
                }

                private Runnable runTimer = new Runnable()
                {
                        public void run()
                        {
                                // Decrement the counter ======
                                if( _seconds > 0 )
                                        _seconds--;

                                // Broadcast the tick =========
                                Intent intent = new Intent(TICK_ACTION);
                                intent.putExtra( "seconds", _seconds );
                                sendBroadcast( intent );

                                // Schedule another tick? ======
                                if( _seconds > 0 )
                                        scheduleTick( this );
                        }
                };
        }
}


I would like the TimerView to be able to receive the TICK broadcasts
from the TimerService and update itself accordingly.  So, something
like this...


public class TimerView extends FrameLayout
{
        public TimerView(Context context, AttributeSet attrs, int defStyle)
        {
                super( context, attrs, defStyle );
                LayoutInflater.from( context ).inflate( R.layout.timerview, 
this,
true );
                ...
                mStartButton = (ToggleButton)findViewById( R.id.Start );
                mStartButton.setOnClickListener( new OnClickListener()
                        public void onClick(View view)
                        {
                                requestFocus();

                                Intent intent = new Intent(START_ACTION);
                                intent.putExtra( "seconds", getTimeInSeconds() 
);

                                Context context = this.getContext();
                                context.sendBroadcast( intent );
                        }
                } );
        }

        public class TickListener extends BroadcastReceiver
        {
                @Override
                public void onReceive(Context context, Intent intent)
                {
                        int seconds = intent.getIntExtra( "seconds", 0 );
                        setTimeInSeconds( seconds ); // Sets the view to the 
number of
seconds remaining
                }
        }
}


The <application> tag in the manifest contians this to tie it all
together

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.poof.timer"
      android:versionCode="1"
      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/
app_name">

        <activity android:name=".TimerActivity" android:label="@string/
app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category
android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name="TimerActivity$TickListener">
          <intent-filter>
            <action android:name="com.poof.timer.action.TICK"/>
          </intent-filter>
        </receiver>

        <service android:name=".TimerService" android:enabled="true">
        </service>

        <receiver android:name="TimerService$StartListener">
          <intent-filter>
            <action android:name="com.poof.timer.action.START"/>
          </intent-filter>
        </receiver>

    </application>
</manifest>


Look good so far?  Well, it isnt.  The problem is that it wont build
because, according to Eclipse, "com.icd.timer.TimerService
$StartListener is enclosed, but not static".  Its the same with
TickListener.  I could simply make the StartReceiver and TickReceiver
classes static but that wont work because both of them need to set the
state of their containing objects.

How do I get around this?  Am I using the architecture for this
incorrectly?  (Its my first android app).  If not then how should I do
it?

Thanks much!
Clark

--~--~---------~--~----~------------~-------~--~----~

3. Amon_Ra, RAV 1.6.2..

4. Getting key for maps....

5. 1.6 vs setPictureSize

6. ListView with Streaming Content

7. No luck with italic text