2016-09-09 37 views
1

我已經整合Facebook連接到我的應用程序。現在用我的代碼我只取用戶名。我如何檢索FB的圖片圖像並將其設置爲Circle ImageView? 這是我的代碼來連接和retrive名稱:Android的facebook連接設置配置文件圖片

public class facebookFragment extends Fragment { 

private EditText mTextDetails; 
private TextView nome; 
private ImageView profile_pic; 
private CallbackManager mCallbackManager; 
private AccessTokenTracker mTokenTracker; 
private ProfileTracker mProfileTracker; 
private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
     Log.d("VIVZ", "onSuccess"); 
     AccessToken accessToken = loginResult.getAccessToken(); 
     Profile profile = Profile.getCurrentProfile(); 
     mTextDetails.setText(constructWelcomeMessage(profile)); 

    } 


    @Override 
    public void onCancel() { 
     Log.d("VIVZ", "onCancel"); 
    } 

    @Override 
    public void onError(FacebookException e) { 
     Log.d("VIVZ", "onError " + e); 
    } 
}; 


public facebookFragment() { 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mCallbackManager = CallbackManager.Factory.create(); 
    setupTokenTracker(); 
    setupProfileTracker(); 

    mTokenTracker.startTracking(); 
    mProfileTracker.startTracking(); 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.facebook_connect, container, false); 
} 

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    setupTextDetails(view); 
    setupLoginButton(view); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    Profile profile = Profile.getCurrentProfile(); 
    mTextDetails.setText(constructWelcomeMessage(profile)); 


} 

@Override 
public void onStop() { 
    super.onStop(); 
    mTokenTracker.stopTracking(); 
    mProfileTracker.stopTracking(); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    mCallbackManager.onActivityResult(requestCode, resultCode, data); 
} 

private void setupTextDetails(View view) { 
    mTextDetails = (EditText) view.findViewById(R.id.editText_nome); 
    nome = (TextView) view.findViewById(R.id.nome); 
    profile_pic = (ImageView) view.findViewById(R.id.profile_pic); 
} 

private void setupTokenTracker() { 
    mTokenTracker = new AccessTokenTracker() { 
     @Override 
     protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { 
      Log.d("VIVZ", "" + currentAccessToken); 
     } 
    }; 
} 

private void setupProfileTracker() { 
    mProfileTracker = new ProfileTracker() { 
     @Override 
     protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { 
      Log.d("VIVZ", "" + currentProfile); 
      mTextDetails.setText(constructWelcomeMessage(currentProfile)); 
      nome.setText(constructWelcomeMessage(currentProfile)); 
     } 
    }; 
} 

private void setupLoginButton(View view) { 
    LoginButton mButtonLogin = (LoginButton) view.findViewById(R.id.login_button_fb); 
    mButtonLogin.setFragment(this); 
    mButtonLogin.setReadPermissions("user_friends"); 
    mButtonLogin.registerCallback(mCallbackManager, mFacebookCallback); 
} 

private String constructWelcomeMessage(Profile profile) { 
    StringBuffer stringBuffer = new StringBuffer(); 
    if (profile != null) { 
     stringBuffer.append(profile.getName()); 
    } 
    return stringBuffer.toString(); 
} 



} 

感謝所有幫助

回答

0

試試這個下載,使輪廓圓潤,

獲得來自Facebook的IMG和下載

//            img size 
String myPicURL = profile.getProfilePictureUri(200, 200).toString(); 

downloadImg(new OnImageDownloaded() { 
      @Override 
      public void onResponce(Bitmap bitmap) { 
       if (bitmap != null) { 
       imageview.setImageBitmap(getRoundedBitmap(bitmap)); 
       } else { 
        ...      
       } 

      } 
     }).execute(myPicURL); 



     public AsyncTask<String, Void, Bitmap> downloadImg(final OnImageDownloaded myInterface) { 
      return new AsyncTask<String, Void, Bitmap>() { 

       @Override 
       protected Bitmap doInBackground(String... params) { 
        try { 
         // Download Image from URL 
         InputStream input = new java.net.URL(params[0]).openStream(); 
         // Decode Bitmap 
         return BitmapFactory.decodeStream(input); 
        } catch (IOException e) { 
         e.printStackTrace(); 
         return null; 
        } catch (NullPointerException npe) { 
         npe.printStackTrace(); 
         return null; 
        } 
      } 

       @Override 
       protected void onPostExecute(Bitmap result) { 
        myInterface.onResponce(result); 
       } 
     }; 
    } 

private interface OnImageDownloaded { 
    void onResponce(Bitmap bitmap); 
} 

,以獲得圓潤的位圖

public Bitmap getRoundedBitmap(Bitmap bitmap){ 
    Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 
    Paint paint = new Paint(); 
    paint.setShader(shader); 
    paint.setAntiAlias(true); 
    Canvas c = new Canvas(circleBitmap); 
    c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint); 
    return circleBitmap; 
}