Added Picasso library

This commit is contained in:
NudeDude 2018-01-19 19:05:06 +01:00
parent f1446f4a51
commit 9b0753bea4
12 changed files with 50 additions and 116 deletions

View File

@ -27,6 +27,7 @@ dependencies {
compile 'com.android.support:design:26+' compile 'com.android.support:design:26+'
compile(name: 'colorpicker', ext: 'aar') compile(name: 'colorpicker', ext: 'aar')
compile files('libs/twitter4j-core-4.0.4.jar') compile files('libs/twitter4j-core-4.0.4.jar')
implementation files('libs/picasso-2.5.2.jar')
} }
repositories { repositories {

BIN
app/libs/picasso-2.5.2.jar Normal file

Binary file not shown.

View File

@ -50,9 +50,6 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
private boolean settingFlag = false; private boolean settingFlag = false;
private String currentTab = "timeline"; private String currentTab = "timeline";
/**
* Create Activity
*/
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -74,9 +71,6 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
} else { login(); } } else { login(); }
} }
/**
* Create Actionbar
*/
@Override @Override
public boolean onCreateOptionsMenu(Menu m) { public boolean onCreateOptionsMenu(Menu m) {
toolbar.inflateMenu(R.menu.home); toolbar.inflateMenu(R.menu.home);
@ -103,9 +97,6 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
return true; return true;
} }
/**
* Actionbar selection
*/
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
Intent intent; Intent intent;
@ -312,7 +303,7 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
} }
/** /**
* Set DB Content * Set Teb Content
*/ */
private void setTabContent() { private void setTabContent() {
TweetDatabase tweetDeck = new TweetDatabase(con,TweetDatabase.HOME_TL, 0L); TweetDatabase tweetDeck = new TweetDatabase(con,TweetDatabase.HOME_TL, 0L);

View File

@ -1,53 +0,0 @@
package org.nuclearfog.twidda.backend;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;
import org.nuclearfog.twidda.R;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.URL;
public class ImageDownloader extends AsyncTask<String, Void, Bitmap>
{
private final WeakReference<ImageView> imgReference ;
public ImageDownloader(WeakReference<ImageView> imgReference) {
this.imgReference = imgReference;
}
public ImageDownloader(ImageView img) {
imgReference = new WeakReference<>(img);
}
@Override
protected Bitmap doInBackground(String... links) {
Bitmap picture = null;
try {
InputStream iStream = new URL(links[0]).openStream();
picture = BitmapFactory.decodeStream(iStream);
} catch(Exception err) {
err.printStackTrace();
}
return picture;
}
@Override
protected void onPostExecute(Bitmap img) {
ImageView pb = imgReference.get();
if(pb != null) {
if(img != null)
pb.setImageBitmap(img);
else
pb.setImageResource(R.mipmap.pb);
}
}
@Override
protected void onCancelled(){
super.onCancelled();
}
}

View File

@ -8,12 +8,19 @@ import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
import org.nuclearfog.twidda.viewadapter.TrendAdapter; import org.nuclearfog.twidda.viewadapter.TrendAdapter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.Toast; import android.widget.Toast;
import android.content.Context; import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import twitter4j.Paging; import twitter4j.Paging;
import twitter4j.Twitter; import twitter4j.Twitter;
import twitter4j.TwitterException; import twitter4j.TwitterException;

View File

@ -11,6 +11,8 @@ import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
@ -174,8 +176,8 @@ public class ProfileAction extends AsyncTask<Long,Void,Long>
linkIcon.setVisibility(View.VISIBLE); linkIcon.setVisibility(View.VISIBLE);
} }
if(imgEnabled) { if(imgEnabled) {
new ImageDownloader(profile).execute(imageLink); Picasso.with(context).load(imageLink).into(profile);
//new ImageDownloader(banner).execute(bannerLink); TODO Picasso.with(context).load(bannerLink).into(banner);
} else { } else {
profile.setImageResource(R.mipmap.pb); profile.setImageResource(R.mipmap.pb);
} }

View File

@ -185,6 +185,10 @@ public class TweetDatabase {
db.close(); db.close();
} }
public void setPbList(List<Bitmap> profileImg) {
this.profileImg = profileImg;
}
public int getSize() { public int getSize() {
return size; return size;
} }
@ -198,7 +202,7 @@ public class TweetDatabase {
public String getScreenname(int pos){return scrname.get(pos);} public String getScreenname(int pos){return scrname.get(pos);}
public String getTweet(int pos){return tweet.get(pos);} public String getTweet(int pos){return tweet.get(pos);}
public String getDate(int pos){return timeToString(getTime(pos));} public String getDate(int pos){return timeToString(getTime(pos));}
public String getPbImg (int pos){return pbLink.get(pos);} public String getPbLink (int pos){return pbLink.get(pos);}
public boolean loadImages(){return toggleImg;} public boolean loadImages(){return toggleImg;}
public Bitmap getProfileImg(int pos){return profileImg.get(pos);} public Bitmap getProfileImg(int pos){return profileImg.get(pos);}

View File

@ -23,7 +23,7 @@ public class UserDatabase {
public long getUserID(int pos){ return user.get(pos).getId();} public long getUserID(int pos){ return user.get(pos).getId();}
public String getUsername(int pos){ return user.get(pos).getName();} public String getUsername(int pos){ return user.get(pos).getName();}
public String getScreenname(int pos){ return '@' + user.get(pos).getScreenName();} public String getScreenname(int pos){ return '@' + user.get(pos).getScreenName();}
public String getProfileURL(int pos){ return user.get(pos).getProfileBackgroundImageURL();} public String getImageUrl(int pos){ return user.get(pos).getMiniProfileImageURL();}
public int getSize(){ return user.size(); } public int getSize(){ return user.size(); }
public boolean loadImages(){ return toggleImg; } public boolean loadImages(){ return toggleImg; }
} }

View File

@ -10,22 +10,23 @@ import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.ImageDownloader;
import org.nuclearfog.twidda.window.ColorPreferences; import org.nuclearfog.twidda.window.ColorPreferences;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import java.lang.ref.WeakReference;
public class TimelineAdapter extends ArrayAdapter implements View.OnClickListener { public class TimelineAdapter extends ArrayAdapter implements View.OnClickListener {
private TweetDatabase mTweets; private TweetDatabase mTweets;
private ViewGroup p; private ViewGroup p;
private LayoutInflater inf; private LayoutInflater inf;
private int textColor, background; private int textColor, background;
private Context context;
public TimelineAdapter(Context context, TweetDatabase mTweets) { public TimelineAdapter(Context context, TweetDatabase mTweets) {
super(context, R.layout.tweet); super(context, R.layout.tweet);
this.mTweets = mTweets; this.mTweets = mTweets;
this.context = context;
inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ColorPreferences mColor = ColorPreferences.getInstance(context); ColorPreferences mColor = ColorPreferences.getInstance(context);
textColor = mColor.getColor(ColorPreferences.FONT_COLOR); textColor = mColor.getColor(ColorPreferences.FONT_COLOR);
@ -62,10 +63,9 @@ public class TimelineAdapter extends ArrayAdapter implements View.OnClickListene
((TextView) v.findViewById(R.id.favorite_number)).setText(favoriteStr); ((TextView) v.findViewById(R.id.favorite_number)).setText(favoriteStr);
((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position)); ((TextView) v.findViewById(R.id.time)).setText(mTweets.getDate(position));
((TextView) v.findViewById(R.id.tweettext)).setTextColor(textColor); ((TextView) v.findViewById(R.id.tweettext)).setTextColor(textColor);
ImageView pb = v.findViewById(R.id.tweetPb);
if(mTweets.loadImages()) { if(mTweets.loadImages()) {
ImageView imgView = v.findViewById(R.id.tweetPb); Picasso.with(context).load(mTweets.getPbLink(position)).into(pb);
new ImageDownloader(new WeakReference<>(imgView)).execute(mTweets.getPbImg(position));
} }
return v; return v;
} }

View File

@ -10,23 +10,24 @@ import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import org.nuclearfog.twidda.backend.ImageDownloader; import com.squareup.picasso.Picasso;
import org.nuclearfog.twidda.window.ColorPreferences; import org.nuclearfog.twidda.window.ColorPreferences;
import org.nuclearfog.twidda.database.UserDatabase; import org.nuclearfog.twidda.database.UserDatabase;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import java.lang.ref.WeakReference;
public class UserAdapter extends ArrayAdapter implements View.OnClickListener { public class UserAdapter extends ArrayAdapter implements View.OnClickListener {
private UserDatabase userDatabase; private UserDatabase userDatabase;
private ViewGroup p; private ViewGroup p;
private LayoutInflater inf; private LayoutInflater inf;
private int background; private int background;
private Context context;
public UserAdapter(Context context, UserDatabase userDatabase) { public UserAdapter(Context context, UserDatabase userDatabase) {
super(context, R.layout.user); super(context, R.layout.user);
this.userDatabase = userDatabase; this.userDatabase = userDatabase;
this.context = context;
inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inf = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ColorPreferences mColor = ColorPreferences.getInstance(context); ColorPreferences mColor = ColorPreferences.getInstance(context);
background = mColor.getColor(ColorPreferences.BACKGROUND); background = mColor.getColor(ColorPreferences.BACKGROUND);
@ -50,22 +51,13 @@ public class UserAdapter extends ArrayAdapter implements View.OnClickListener {
v.setBackgroundColor(background); v.setBackgroundColor(background);
v.setOnClickListener(this); v.setOnClickListener(this);
} }
((TextView)v.findViewById(R.id.username_detail)).setText(userDatabase.getUsername(position)); ((TextView)v.findViewById(R.id.username_detail)).setText(userDatabase.getUsername(position));
((TextView)v.findViewById(R.id.screenname_detail)).setText(userDatabase.getScreenname(position)); ((TextView)v.findViewById(R.id.screenname_detail)).setText(userDatabase.getScreenname(position));
ImageView imgView = v.findViewById(R.id.user_profileimg); ImageView pb = v.findViewById(R.id.user_profileimg);
if(userDatabase.loadImages()) { if(userDatabase.loadImages()) {
ImageDownloader imgDl = new ImageDownloader(new WeakReference<>(imgView)); Picasso.with(context).load(userDatabase.getImageUrl(position)).into(pb);
imgDl.execute(userDatabase.getProfileURL(position));
} else {
imgView.setImageResource(R.mipmap.pb);
} }
return v; return v;
} }

View File

@ -9,7 +9,6 @@ import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView;
import org.nuclearfog.twidda.backend.ShowStatus; import org.nuclearfog.twidda.backend.ShowStatus;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
@ -25,8 +24,6 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
private ListView answer_list; private ListView answer_list;
private long tweetID; private long tweetID;
private long userID; private long userID;
private long replyID = -1;
private boolean home = false;
@Override @Override
protected void onCreate(Bundle b) { protected void onCreate(Bundle b) {
@ -34,12 +31,6 @@ public class TweetDetail extends AppCompatActivity implements View.OnClickListen
setContentView(R.layout.tweet_detail); setContentView(R.layout.tweet_detail);
tweetID = getIntent().getExtras().getLong("tweetID"); tweetID = getIntent().getExtras().getLong("tweetID");
userID = getIntent().getExtras().getLong("userID"); userID = getIntent().getExtras().getLong("userID");
if(getIntent().hasExtra("home")) {
home = getIntent().getExtras().getBoolean("home");
}
if(getIntent().hasExtra("replyID")) {
replyID = getIntent().getExtras().getLong("replyID");
}
answer_list = (ListView) findViewById(R.id.answer_list); answer_list = (ListView) findViewById(R.id.answer_list);
Button answer = (Button) findViewById(R.id.answer_button); Button answer = (Button) findViewById(R.id.answer_button);

View File

@ -3,22 +3,18 @@ package org.nuclearfog.twidda.window;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TabHost; import android.widget.TabHost;
import android.widget.TextView; import android.widget.TextView;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.TwitterResource;
import org.nuclearfog.twidda.database.TweetDatabase; import org.nuclearfog.twidda.database.TweetDatabase;
import org.nuclearfog.twidda.backend.ProfileAction; import org.nuclearfog.twidda.backend.ProfileAction;
import org.nuclearfog.twidda.viewadapter.TimelineAdapter; import org.nuclearfog.twidda.viewadapter.TimelineAdapter;
@ -38,8 +34,6 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
private boolean home; private boolean home;
private String currentTab = "tweets"; private String currentTab = "tweets";
private RecyclerView testV;
@Override @Override
protected void onCreate(Bundle savedInstance) { protected void onCreate(Bundle savedInstance) {
super.onCreate(savedInstance); super.onCreate(savedInstance);
@ -105,21 +99,26 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
case R.id.profile_tweet: case R.id.profile_tweet:
intent = new Intent(this, TweetPopup.class); intent = new Intent(this, TweetPopup.class);
Bundle b = new Bundle(); Bundle b = new Bundle();
if(home) if(home) {
b.putLong("TweetID", -1); b.putLong("TweetID", -1);
else } else {
b.putLong("TweetID", userId); b.putLong("TweetID", userId);
}
intent.putExtras(b); intent.putExtras(b);
startActivity(intent); startActivity(intent);
break; return true;
case R.id.profile_follow: case R.id.profile_follow:
action.execute(userId, ProfileAction.ACTION_FOLLOW); if(!home) {
break; action.execute(userId, ProfileAction.ACTION_FOLLOW);
}
return true;
case R.id.profile_block: case R.id.profile_block:
action.execute(userId, ProfileAction.ACTION_MUTE); if(!home) {
break; action.execute(userId, ProfileAction.ACTION_MUTE);
}
return true;
default: return false;
} }
return true;
} }
@Override @Override
@ -147,7 +146,6 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putLong("tweetID",tweetID); bundle.putLong("tweetID",tweetID);
bundle.putLong("userID",userID); bundle.putLong("userID",userID);
bundle.putBoolean("home", true);
intent.putExtras(bundle); intent.putExtras(bundle);
startActivity(intent); startActivity(intent);
} }
@ -192,15 +190,16 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen
private void getContent() { private void getContent() {
TweetDatabase mTweet = new TweetDatabase(UserProfile.this, TweetDatabase.USER_TL, userId); TweetDatabase mTweet = new TweetDatabase(UserProfile.this, TweetDatabase.USER_TL, userId);
TweetDatabase fTweet = new TweetDatabase(UserProfile.this, TweetDatabase.FAV_TL, userId); TweetDatabase fTweet = new TweetDatabase(UserProfile.this, TweetDatabase.FAV_TL, userId);
if(mTweet.getSize()>0) if(mTweet.getSize()>0) {
homeTweets.setAdapter(new TimelineAdapter(UserProfile.this,mTweet)); homeTweets.setAdapter(new TimelineAdapter(UserProfile.this,mTweet));
else }else {
new ProfileAction(this, tool).execute(userId, ProfileAction.GET_TWEETS); new ProfileAction(this, tool).execute(userId, ProfileAction.GET_TWEETS);
}
if(fTweet.getSize()>0) if(fTweet.getSize()>0) {
homeFavorits.setAdapter(new TimelineAdapter(UserProfile.this,fTweet)); homeFavorits.setAdapter(new TimelineAdapter(UserProfile.this,fTweet));
else } else {
new ProfileAction(this, tool).execute(userId, ProfileAction.GET_FAVS); new ProfileAction(this, tool).execute(userId, ProfileAction.GET_FAVS);
}
} }
private void initElements() { private void initElements() {