Back to project page kakao-android-sdk-standalone.
The source code is released under:
Apache License
If you think the Android project kakao-android-sdk-standalone listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/** * Copyright 2014 Minyoung Jeong <kkungkkung@gmail.com> * Copyright 2014 Kakao Corp./*w ww.j a va 2 s . com*/ * * Redistribution and modification in source or binary forms are not permitted without specific prior written permission. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.kakao.widget; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Build; import android.util.AttributeSet; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.kakao.MeResponseCallback; import com.kakao.UserManagement; import com.kakao.UserProfile; import com.kakao.core.R; import java.io.InputStream; import java.net.URL; //TODO image upload, back button, cancel button /** * ?? UserProfile(???? ID, ???, ??? ?????)??? ???? Layout. * </br> * 1. ?????? ??? layout?? {@link com.kakao.sample.kakaotalk.widget.ProfileLayout}??? ????. * </br> * 2. {@link com.kakao.sample.kakaotalk.widget.ProfileLayout#setEditable(boolean)}? ?????? ????? ??? ?? ??? ????????? ????. ?????? ?????? ?? ?????. * </br> * 3. {@link com.kakao.sample.kakaotalk.widget.ProfileLayout#setMeResponseCallback(com.kakao.MeResponseCallback)}? ?????? ?????? ?? ???? ?? callback??? ????. * </br> * @author MJ */ public class ProfileLayout extends FrameLayout { private boolean editable = false; private MeResponseCallback meResponseCallback; private String profileImageURL; private String nickname; private String userId; private ImageView profile; private EditText nicknameText; private TextView userIdText; public ProfileLayout(Context context) { super(context); } public ProfileLayout(Context context, AttributeSet attrs) { super(context, attrs); } public ProfileLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } /** * ???? ??? ?? ????? ????. * @param editable ?????? true, ?? ????? false? ????. */ public void setEditable(boolean editable) { this.editable = editable; } /** * ?????? ?? ???? ?? callback??? ????. * @param callback ?????? ?? ???? ?? callback */ public void setMeResponseCallback(final MeResponseCallback callback){ this.meResponseCallback = callback; } /** * param?? ? UserProfile?? ?? view? update??. * @param userProfile ???? ???? ???? ?? */ public void setUserProfile(final UserProfile userProfile) { setProfileURL(userProfile.getProfileImagePath()); setNickname(userProfile.getNickname()); setUserId(String.valueOf(userProfile.getId())); } /** * ??? ??????? ?? view? update??. * @param profileImageURL ???? ???? ??? ????? */ public void setProfileURL(final String profileImageURL) { this.profileImageURL = profileImageURL; if (profile != null && profileImageURL != null) { new DownloadImageTask(profile).execute(profileImageURL); } } /** * ?? view? update??. * @param nickname ???? ???? ?? */ public void setNickname(final String nickname) { this.nickname = nickname; if (nicknameText != null && nickname != null) nicknameText.setText(nickname); } /** * ???? ????? view? update??. * @param userId ???? ???? ???? ????? */ public void setUserId(final String userId) { this.userId = userId; if (userIdText != null && userId != null) userIdText.setText(userId); } /** * ???? ??? layout?? ????. */ @Override protected void onAttachedToWindow () { super.onAttachedToWindow(); View view = inflate(getContext(), R.layout.kakao_profile_layout, this); profile = (ImageView) view.findViewById(R.id.com_kakao_profile_image); if (profileImageURL != null) setProfileURL(profileImageURL); if (!editable) { ImageView editableMark = (ImageView) view.findViewById(R.id.profile_edit); editableMark.setVisibility(View.INVISIBLE); } nicknameText = (EditText) view.findViewById(R.id.com_kakao_profile_nickname); if (!editable) { nicknameText.setEnabled(false); nicknameText.setKeyListener(null); setBackgroundCompat(nicknameText, null); nicknameText.setPadding(0, 0, 0, 0); nicknameText.setTextColor(getResources().getColor(R.color.com_kakao_profile_text)); } if (nickname != null) nicknameText.setText(nickname); userIdText = (TextView) view.findViewById(R.id.com_kakao_profile_userId); if (userId != null) userIdText.setText(userId); } @TargetApi(16) private void setBackgroundCompat(View v, Drawable drawable) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { v.setBackground(drawable); } else { v.setBackgroundDrawable(drawable); } } /** * ???? ??? ????. */ public void requestMe() { UserManagement.requestMe(meResponseCallback); } private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView imageView; public DownloadImageTask(ImageView imageView) { this.imageView = imageView; } protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0]; Bitmap bitmap = null; try { InputStream in = new URL(urldisplay).openStream(); bitmap = BitmapFactory.decodeStream(in); } catch (Exception e) { e.printStackTrace(); } return bitmap; } protected void onPostExecute(Bitmap result) { imageView.setImageBitmap(result); } } }