package net.londatiga.android.example; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import net.londatiga.android.twitter.Twitter; import net.londatiga.android.twitter.TwitterRequest; import net.londatiga.android.twitter.util.Debug; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; public class UserActivity extends BaseActivity { private Twitter mTwitter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user); mTwitter = new Twitter(this, MainActivity.CONSUMER_KEY, MainActivity.CONSUMER_SECRET, MainActivity.CALLBACK_URL); ((Button) findViewById(R.id.btn_logout)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { mTwitter.clearSession(); clearCredential(); startActivity(new Intent(getActivity(), MainActivity.class)); finish(); } }); ((TextView) findViewById(R.id.tv_name)).setText(getUserName()); ((TextView) findViewById(R.id.tv_username)).setText(getScreenName()); final EditText tweetEt = (EditText) findViewById(R.id.et_message); ((Button) findViewById(R.id.btn_post)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String status = tweetEt.getText().toString(); if (status.equals("")) { showToast("Please write your status"); return; } updateStatus(status); } }); ImageView userIv = (ImageView) findViewById(R.id.iv_user); DisplayImageOptions displayOptions = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.ic_user) .showImageForEmptyUri(R.drawable.ic_user) .showImageOnFail(R.drawable.ic_user) .cacheInMemory(true) .cacheOnDisc(false) .considerExifParams(true) .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) .writeDebugLogs() .defaultDisplayImageOptions(displayOptions) .build(); ImageLoader imageLoader = ImageLoader.getInstance(); imageLoader.init(config); AnimateFirstDisplayListener animate = new AnimateFirstDisplayListener(); imageLoader.displayImage(getProfilePicture(), userIv, animate); } private void updateStatus(String status) { final ProgressDialog progressDlg = new ProgressDialog(this); progressDlg.setMessage("Sending..."); progressDlg.setCancelable(false); progressDlg.show(); TwitterRequest request = new TwitterRequest(mTwitter.getConsumer(), mTwitter.getAccessToken()); String updateStatusUrl = "https://api.twitter.com/1.1/statuses/update.json"; List<NameValuePair> params = new ArrayList<NameValuePair>(1); params.add(new BasicNameValuePair("status", status)); request.createRequest("POST", updateStatusUrl, params, new TwitterRequest.RequestListener() { @Override public void onSuccess(String response) { progressDlg.dismiss(); showToast(response); Debug.i(response); } @Override public void onError(String error) { showToast(error); progressDlg.dismiss(); } }); } public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>()); @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null) { ImageView imageView = (ImageView) view; boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } } }