Assuming the user is logged into their Google+ account on the phone, How can one get the Google+ Image (circular) and the Google+ Cover Photo into the Navigation Drawer of an Android app? Is there an API for this? Also, how can we display the profile photo as a circle? I am trying to achieve the same navigation drawer UI as the Android INBOX app.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
- You will need Enabling G+ API on google console.
https://developers.google.com/+/mobile/android/getting-started#step_1_enable_the_google_api
- You will need to make custom navigation drawer:
http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/
How to create a custom navigation drawer in android
- You will need to initialize the GoogleApiClient
https://developer.android.com/google/auth/api-client.html
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......
googleApiClient = new GoogleApiClient.Builder(getActivity())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.addScope(Plus.SCOPE_PLUS_PROFILE)
.build();
}
@Override
public void onConnected(Bundle bundle) {
Plus.PeopleApi.loadVisible(googleApiClient, null).setResultCallback(this);
if (Plus.PeopleApi.getCurrentPerson(googleApiClient) != null) {
Person person = Plus.PeopleApi.getCurrentPerson(googleApiClient);
personNameView.setText(person.getDisplayName());
if (person.hasImage()) {
Person.Image image = person.getImage();
new AsyncTask<String, Void, Bitmap>() {
@Override
protected Bitmap doInBackground(String... params) {
try {
URL url = new URL(params[0]);
InputStream in = url.openStream();
return BitmapFactory.decodeStream(in);
} catch (Exception e) {
/* TODO log error */
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
personImageView.setImageBitmap(bitmap);
}
}.execute(image.getUrl());
}
}
The whole example you can get here: http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/
For cover photo you can do similar
Person.Cover.CoverPhoto cover = person.getCover().getCoverPhoto();
cover.getUrl()
- Circle image
http://curious-blog.blogspot.com/2014/05/create-circle-bitmap-in-android.html
How to make an ImageView with rounded corners?