Wednesday, April 15, 2009

Jennifer Love Hewitt’s Got The Shopping Blues!

Ghost Whisperer star Jennifer Love Hewitt is still recovering from the break up with her long time boyfriend and fiancé Ross McCall and trying to keep up a normal lifestyle after she got a restraining order against a creepy stalker.



Media_http4bpblogspot_vrpzr

The actress was seen out and about in Hollywood doing some shopping. It’s just the right thing to do if you want to forget but Jennifer still looked totally miserable or just bored by the presence of the paparazzi. We already hated the lame actor for dating Jennifer Love Hewitt.

Then, we got a glimpse of The Ghost Whisperer star in her latest photo shoot in Maxim. Now, Kennedy might wanna sleep with one eye open.

This has to be Jennifer Love Hewitt Hottest Maxim shoot to date. Since Jennifer got the new boyfriend she's been turning up the heat, whats next? Thank you Maxim! To Jennifer Love Hewitt Maxim Shoot pics. To Jennifer Love Hewitt Gallery.


Jennifer Love Hewit Maxim Magazine Out & About Shopping In Hollywood



UI framework changes in Android 1.5

On Monday, we released an early look at the Android 1.5 SDK. Not only does this platform update contain numerous new features, APIs, and bug fixes, but Android 1.5 also brings a new default look for the Android UI framework. After Android 1.0 and 1.1, our designers worked hard to refine and polish the appearance of the system. The screenshots below show the same activity (creating a new contact) on Android 1.1 and Android 1.5:


Media_http1bpblogspot_qhbxm

You can see in this example that the buttons and checkboxes have a new appearance. Even though these changes do not affect binary nor source compatibility, they might still break the UI of your apps. As part of the UI refresh, the minimum size of some of the widgets has changed. For instance, Android 1.1 buttons have a minimum size of 44x48 pixels whereas Android 1.5 buttons now have a minimum size of 24x48 pixels. The image below compares the sizes of Android 1.1 buttons with Android 1.5 buttons:


Media_http4bpblogspot_hybah

If you rely on the button's minimum size, then the layout of your application may not be the same in Android 1.5 as it was in Android 1.1 because of this change. This would happen for instance if you created a grid of buttons using LinearLayout and relying on the minimum size yielded by wrap_content to align the buttons properly:


Media_http2bpblogspot_qlkcv

This layout could easily be fixed by using the android:layout_weight attribute or by replacing the LinearLayout containers with a TableLayout.

This example is probably the worst-case UI issue you may encounter when running your application on Android 1.5. Other changes introduced in Android 1.5, especially bug fixes in the layout views, may also impact your application—especially if it is relying on faulty/buggy behavior of the UI framework.

If you encounter issues when running your application on Android 1.5, please join us on the Google groups or IRC so that we and the Android community can help you fix your application.

Happy coding!

Monday, April 13, 2009

Getting ready for Android 1.5




I'm excited to announce that starting today, developers can get an early look at the SDK for the next version of the Android platform. This new version (which will be 1.5) is based on the cupcake branch from the Android Open Source Project. Version 1.5 introduces APIs for features such as soft keyboards, home screen widgets, live folders, and speech recognition. At the developer site, you can download the early-look Android 1.5 SDK, read important information about upgrading your Eclipse plugin and existing projects, and learn about what's new and improved in Android 1.5.

We've also made changes to the developer tools and the structure of the SDK itself. Future Android SDK releases will include multiple versions of the Android platform. For example, this early-look includes Android platform versions 1.1 and 1.5. One benefit of this change is that developers can target different Android platform versions from within a single SDK installation. Another is that it enables developers to install Android SDK add-ons to access extended functionality that might be provided by OEMs, carriers, or other providers. We at Google are using this feature ourselves: this early-look SDK includes an add-on for the Google APIs. This add-on provides support for the Google Maps API, which was previously embedded in the "core" SDK.

To help you prepare your applications for the release of Android 1.5 on phones, over the next few weeks we'll be publishing a series of articles on this blog to highlight new APIs and other changes. In addition to the new APIs that I've mentioned, we'll cover topics such as OpenGL, asynchronous tasks, system settings, and new Activity callbacks.

I encourage you to start working with this early-look SDK, but please know that the APIs for Android 1.5 have not been finalized. The majority of the APIs are settled, but there may be some changes before the final release. As a result, it's very important that you don't release applications based on this early-look SDK, since they may not work on real devices. The applications you release should be built on the final Android 1.5 SDK release, which will be available around the end of this month.

I look forward to seeing all the great apps that use the new capabilities in Android 1.5. Happy coding!

Tuesday, April 7, 2009

Embrace the Inner Diva

“I believe that it’s better to be looked over than it is to be overlooked.”
Mae West

To be a diva is to be a woman confident in her own skin. A woman willing to take on the world without fear, just as adeptly as a leopard chasing it’s prey. A diva always stands up for herself and lets her voice be heard. She strives in every aspect of her life and consistently hones each and every talent. A diva knows how to have fun and lives each day to the fullest. And nothing gets in her way whether it is a lack of resources or personal strife. A diva always knows how to get what she wants and does so effortlessly. There is a diva living inside us all, but most of us have to delve deep within ourselves to rouse her. Once she is awakened, life will never be the same again! Awake your inner diva from out of her slumber and start living each day to the fullest!

Love yourself TODAY – So what if you are overweight, suffering from a skin problem or something else that makes you feel less than beautiful. Embrace all of your flaws and accept them as part of your very being. You can always tweak your flaws to make them better. Focus on the things that you like about yourself, such as those gorgeous green eyes or a flawless complexion, and everything else will fall into place.


Build Up Others – Most women have a flaw that eats away at their core. Rather than highlighting another woman’s flaws, build her up by praising her attributes and paying her compliments. Make building others up a habit as you move throughout your day. You will find that the sentiment is often reciprocated, which will go a long way in reinforcing your own self-esteem. A true diva does not capitalize on other’s misery, in fact she sees other women as her sisters in life rather than the competition.

Don’t Supply the Ammo – You know your weaknesses, flaws and other shortcomings. There is absolutely no reason to publicize them to the rest of the world. Don’t ever give someone else the ‘ammo’ to belittle or humiliate you. Keep your flaws to yourself and embrace them in the full knowledge that they are not set in stone. You can and will change them, but only if you deem necessary.

You’ve Got the Look – Now that your inner diva is awakened, you’ve got to dress her to the nines! A diva always looks her best even if she is only wearing a pair of jeans and a t-shirt. Her clothes are always impeccably clean, pressed and never tattered. Her hair is kempt and she always has a bit of bling on even if she is only going to the grocery store. A real diva uses make-up sparingly while highlighting her natural beauty through exceptional cleanliness and impeccable hygiene.

Life is too short to waste a moment of it wallowing in self-doubt and negativity. Allow your inner diva to shine and your confidence will soar to even greater heights!



Monday, March 30, 2009

Developer News

For no particular reason other than to celebrate this particular Monday, I wanted to update developers on two Android-related news items.

If you're a developer who will be in the San Francisco Bay Area at the end of May, I hope you'll join us at the 2009 Google I/O developer conference. You might have already seen the sessions we had listed for Android, but today I'm quite pleased to let you know that we've added a few more Android-related sessions. You can find the full list plus abstracts on the Google I/O site, but here are the titles:


  • Turbo-Charge Your UI: How to Make Your Android UI Fast and Efficient

  • Pixel-Perfect Code: How to Marry Interaction and Visual Design the Android Way

  • Supporting Multiple Devices with One Binary

  • Debugging Arts of the Ninja Masters

  • Coding for Life—Battery Life, That Is

  • Writing Real-Time Games for Android

  • Android Lightning Talks

These sessions don't even include the "fireside chat" with the Core Technical Team that we have planned. We're working on still more sessions too; keep an ear to the ground on this blog and the Google I/O site for the latest info. I'm pretty excited about how the Android sessions for Google I/O are coming together. I think it's going to be a great event, and I hope to meet many of you there.

The other topic I want to mention is that our partners at HTC have uploaded a new system image for Android Dev Phone 1 owners. This new image is mostly the same as the one we mentioned earlier this month, but adds voice dialing. Note that not all features will work correctly in all countries, such as voice dialing and Google Voice Search which currently only work well for US English. Additionally, there are some features that we aren't able to make available at all in some countries. For instance, this build can't currently include Google Latitude due to privacy standards in some regions. We'll always keep the ADP1 builds as full-featured as we can, but it's important to remember that these devices are primarily intended for development, and won't necessarily have all the features included on mainstream builds.

I hope this news is useful to you. As always, happy coding!

Android Layout Tricks #3: Optimize with stubs

Sharing and reusing layouts is very easy with Android thanks to the <include /> tag, sometimes even too easy and you might end up with user interfaces that contain a large number of views, some of which are rarely used. Thankfully, Android offers a very special widget called ViewStub, which brings you all the benefits of the <include /> without polluting your user interface with rarely used views.

A ViewStub is a dumb and lightweight view. It has no dimension, it does not draw anything and does not participate in the layout in any way. This means a ViewStub is very cheap to inflate and very cheap to keep in a view hierarchy. A ViewStub can be best described as a lazy include. The layout referenced by a ViewStub is inflated and added to the user interface only when you decide so.

The following screenshot comes from the Shelves application. The main purpose of the activity shown in the screenshot is to present the user with a browsable list of books:


Media_http2bpblogspot_hswch

The same activity is also used when the user adds or imports new books. During such an operation, Shelves shows extra bits of user interface. The screenshot below shows the progress bar and cancel button that appear at the bottom of the screen during an import:


Media_http1bpblogspot_cayjy

Because importing books is not a common operation, at least when compared to browsing the list of books, the import panel is originally represented by a ViewStub:


Media_http4bpblogspot_eyxbf

When the user initiates the import process, the ViewStub is inflated and replaced by the content of the layout file it references:


Media_http1bpblogspot_jelnj

To use a ViewStub all you need is to specify an android:id attribute, to later inflate the stub, and an android:layout attribute, to reference what layout file to include and inflate. A stub lets you use a third attribute, android:inflatedId, which can be used to override the id of the root of the included file. Finally, the layout parameters specified on the stub will be applied to the roof of the included layout. Here is an example:


<ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"

android:layout="@layout/progress_overlay"

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />


When you are ready to inflate the stub, simply invoke the inflate() method. You can also simply change the visibility of the stub to VISIBLE or INVISIBLE and the stub will inflate. Note however that the inflate() method has the benefit of returning the root View of the inflate layout:


((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();


It is very important to remember that after the stub is inflated, the stub is removed from the view hierarchy. As such, it is unnecessary to keep a long-lived reference, for instance in an class instance field, to a ViewStub.

A ViewStub is a great compromise between ease of programming and efficiency. Instead of inflating views manually and adding them at runtime to your view hierarchy, simply use a ViewStub. It's cheap and easy. The only drawback of ViewStub is that it currently does not support the <merge /> tag.

Happy coding!

Sunday, March 29, 2009

Kontes SEO Kampanye berat buat Saiya


Kampanye Damai Pemilu Indonesia 2009 memang sangat berat buat saiya sebagai pemula, sengaja memakai kata saiya karena jika menulis dengan blog saya (saya = Abi di Bahasa Sunda), bisa-bisa salah presepsi kalau orang sunda yang baca blog saya = blog abi. Untuk selanjutnya saya akan diganti dengan saiya. Blog saiya ternyata hanya mampu tembus di posisi 200 besar di kata kunci tersebut, jadinya blog saiya tidak bisa bergaiya di halaman-halaman awal untuk keyword tersebut. Tapi tidak apa-apa karena saiya sebagai pemula masuk rangking dua ratus besar di mesin pencari saja sudah alhamdulillah bangeet.

Kontes SEO memang sedang trend di blogoshere ini, sehingga cukup banyak blogger Indonesia yang berpartisipasi dalam kontes tersebut baik skala nasional maupun internasional. Akhirnya saya sudah kelelahan mencoba untuk memasuki seratus besar saja sulitnya minta ampuin, apalagi kalo harus bermimpi ikut bergaiya di halaman awal, kapan ya saya mampu begitu. Kalo ada saran yang bisa membuat blog saiya ini bisa ikut bergaiya, tolong dong kasih tahu. Masa cuma master saja yang bisa bergaiya, pemula seperti saiya juga pengen dong ikut bergaiya.