special behavior for API < 21
This commit is contained in:
parent
6340b853f6
commit
fcf7ce6f31
|
@ -15,7 +15,10 @@
|
|||
package fr.gouv.etalab.mastodon.activities;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -29,6 +32,7 @@ import android.graphics.drawable.Drawable;
|
|||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.support.design.widget.AppBarLayout;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
|
@ -37,6 +41,7 @@ import android.support.v4.app.Fragment;
|
|||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v4.view.PagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.support.v7.app.ActionBar;
|
||||
|
@ -114,6 +119,9 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
|
|||
private Relationship relationship;
|
||||
private boolean showMediaOnly;
|
||||
private ImageView pp_actionBar;
|
||||
private BroadcastReceiver hide_header;
|
||||
private boolean isHiddingShowing = false;
|
||||
private LinearLayout main_header_container;
|
||||
|
||||
public enum action{
|
||||
FOLLOW,
|
||||
|
@ -140,7 +148,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
|
|||
Bundle b = getIntent().getExtras();
|
||||
account_follow = (FloatingActionButton) findViewById(R.id.account_follow);
|
||||
account_follow_request = (TextView) findViewById(R.id.account_follow_request);
|
||||
|
||||
main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
|
||||
account_follow.setEnabled(false);
|
||||
if(b != null){
|
||||
accountId = b.getString("accountId");
|
||||
|
@ -253,6 +261,43 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
|
|||
}
|
||||
}
|
||||
});
|
||||
|
||||
if( Build.VERSION.SDK_INT < 21) {
|
||||
//Register LocalBroadcast to receive selected accounts after search
|
||||
hide_header = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (!isHiddingShowing) {
|
||||
isHiddingShowing = true;
|
||||
ImageView account_pp = (ImageView) findViewById(R.id.account_pp);
|
||||
boolean hide = intent.getBooleanExtra("hide", false);
|
||||
if (hide) {
|
||||
main_header_container.setVisibility(View.GONE);
|
||||
if (pp_actionBar != null)
|
||||
pp_actionBar.setVisibility(View.VISIBLE);
|
||||
tabLayout.setVisibility(View.GONE);
|
||||
} else {
|
||||
manageButtonVisibility();
|
||||
tabLayout.setVisibility(View.VISIBLE);
|
||||
main_header_container.setVisibility(View.VISIBLE);
|
||||
if (pp_actionBar != null)
|
||||
pp_actionBar.setVisibility(View.GONE);
|
||||
}
|
||||
account_pp.requestLayout();
|
||||
Handler handler = new Handler();
|
||||
handler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
isHiddingShowing = false;
|
||||
}
|
||||
}, 700);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(hide_header, new IntentFilter(Helper.HEADER_ACCOUNT + String.valueOf(instanceValue)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -299,6 +344,12 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy(){
|
||||
super.onDestroy();
|
||||
LocalBroadcastManager.getInstance(this).unregisterReceiver(hide_header);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRetrieveAccount(Account account, Error error) {
|
||||
if( error != null){
|
||||
|
|
|
@ -17,9 +17,11 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -62,6 +64,7 @@ public class DisplayAccountsFragment extends Fragment implements OnRetrieveAccou
|
|||
private boolean swiped;
|
||||
private ListView lv_accounts;
|
||||
private String instanceValue;
|
||||
boolean hideHeader;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
@ -70,7 +73,7 @@ public class DisplayAccountsFragment extends Fragment implements OnRetrieveAccou
|
|||
|
||||
context = getContext();
|
||||
boolean comesFromSearch = false;
|
||||
boolean hideHeader = false;
|
||||
hideHeader = false;
|
||||
Bundle bundle = this.getArguments();
|
||||
accounts = new ArrayList<>();
|
||||
if (bundle != null) {
|
||||
|
@ -107,33 +110,48 @@ public class DisplayAccountsFragment extends Fragment implements OnRetrieveAccou
|
|||
|
||||
if( !comesFromSearch) {
|
||||
//Hide account header when scrolling for ShowAccountActivity
|
||||
if (hideHeader) {
|
||||
ViewCompat.setNestedScrollingEnabled(lv_accounts,true);
|
||||
}else{
|
||||
lv_accounts.setOnScrollListener(new AbsListView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
if (hideHeader && Build.VERSION.SDK_INT >= 21)
|
||||
ViewCompat.setNestedScrollingEnabled(lv_accounts, true);
|
||||
lv_accounts.setOnScrollListener(new AbsListView.OnScrollListener() {
|
||||
int lastFirstVisibleItem = 0;
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
|
||||
}
|
||||
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
|
||||
if (firstVisibleItem + visibleItemCount == totalItemCount) {
|
||||
if (!flag_loading) {
|
||||
flag_loading = true;
|
||||
if (type != RetrieveAccountsAsyncTask.Type.FOLLOWERS && type != RetrieveAccountsAsyncTask.Type.FOLLOWING)
|
||||
asyncTask = new RetrieveAccountsAsyncTask(context, type, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else
|
||||
asyncTask = new RetrieveAccountsAsyncTask(context, type, targetedId, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
nextElementLoader.setVisibility(View.VISIBLE);
|
||||
}
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
if (hideHeader && Build.VERSION.SDK_INT < 21) {
|
||||
if(firstVisibleItem == 0 && Helper.listIsAtTop(lv_accounts)){
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT+instanceValue);
|
||||
intent.putExtra("hide", false);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
}else if (view.getId() == lv_accounts.getId() && totalItemCount > visibleItemCount) {
|
||||
final int currentFirstVisibleItem = lv_accounts.getFirstVisiblePosition();
|
||||
if (currentFirstVisibleItem > lastFirstVisibleItem) {
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT + instanceValue);
|
||||
intent.putExtra("hide", true);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
} else if (currentFirstVisibleItem < lastFirstVisibleItem) {
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT + instanceValue);
|
||||
intent.putExtra("hide", false);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
}
|
||||
} else {
|
||||
nextElementLoader.setVisibility(View.GONE);
|
||||
lastFirstVisibleItem = currentFirstVisibleItem;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (firstVisibleItem + visibleItemCount == totalItemCount) {
|
||||
if (!flag_loading) {
|
||||
flag_loading = true;
|
||||
if (type != RetrieveAccountsAsyncTask.Type.FOLLOWERS && type != RetrieveAccountsAsyncTask.Type.FOLLOWING)
|
||||
asyncTask = new RetrieveAccountsAsyncTask(context, type, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else
|
||||
asyncTask = new RetrieveAccountsAsyncTask(context, type, targetedId, max_id, DisplayAccountsFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
nextElementLoader.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
nextElementLoader.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
|
|
|
@ -14,12 +14,15 @@ package fr.gouv.etalab.mastodon.fragments;
|
|||
* You should have received a copy of the GNU General Public License along with Mastalab; if not,
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcelable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.LocalBroadcastManager;
|
||||
import android.support.v4.view.ViewCompat;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -76,6 +79,8 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
private TextView new_data;
|
||||
private int positionSpinnerTrans;
|
||||
private String since_id;
|
||||
private boolean hideHeader;
|
||||
private String instanceValue;
|
||||
|
||||
public DisplayStatusFragment(){
|
||||
displayStatusFragment = this;
|
||||
|
@ -89,12 +94,13 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
context = getContext();
|
||||
Bundle bundle = this.getArguments();
|
||||
boolean comesFromSearch = false;
|
||||
boolean hideHeader = false;
|
||||
hideHeader = false;
|
||||
showMediaOnly = false;
|
||||
if (bundle != null) {
|
||||
type = (RetrieveFeedsAsyncTask.Type) bundle.get("type");
|
||||
targetedId = bundle.getString("targetedId", null);
|
||||
tag = bundle.getString("tag", null);
|
||||
instanceValue = bundle.getString("hideHeaderValue", null);
|
||||
hideHeader = bundle.getBoolean("hideHeader", false);
|
||||
showMediaOnly = bundle.getBoolean("showMediaOnly",false);
|
||||
if( bundle.containsKey("statuses")){
|
||||
|
@ -129,33 +135,53 @@ public class DisplayStatusFragment extends Fragment implements OnRetrieveFeedsIn
|
|||
if( !comesFromSearch){
|
||||
|
||||
//Hide account header when scrolling for ShowAccountActivity
|
||||
if(hideHeader) {
|
||||
ViewCompat.setNestedScrollingEnabled(lv_status,true);
|
||||
}else{
|
||||
lv_status.setOnScrollListener(new AbsListView.OnScrollListener() {
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
if (hideHeader && Build.VERSION.SDK_INT >= 21)
|
||||
ViewCompat.setNestedScrollingEnabled(lv_status, true);
|
||||
|
||||
}
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
if(firstVisibleItem + visibleItemCount == totalItemCount ) {
|
||||
if(!flag_loading ) {
|
||||
flag_loading = true;
|
||||
if( type == RetrieveFeedsAsyncTask.Type.USER)
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, targetedId, max_id, showMediaOnly, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else if( type == RetrieveFeedsAsyncTask.Type.TAG)
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, tag, targetedId, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
lv_status.setOnScrollListener(new AbsListView.OnScrollListener() {
|
||||
int lastFirstVisibleItem = 0;
|
||||
@Override
|
||||
public void onScrollStateChanged(AbsListView view, int scrollState) {
|
||||
|
||||
nextElementLoader.setVisibility(View.VISIBLE);
|
||||
}
|
||||
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
|
||||
if (hideHeader && Build.VERSION.SDK_INT < 21) {
|
||||
if(firstVisibleItem == 0 && Helper.listIsAtTop(lv_status)){
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT+instanceValue);
|
||||
intent.putExtra("hide", false);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
}else if (view.getId() == lv_status.getId() && totalItemCount > visibleItemCount) {
|
||||
final int currentFirstVisibleItem = lv_status.getFirstVisiblePosition();
|
||||
if (currentFirstVisibleItem > lastFirstVisibleItem) {
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT + instanceValue);
|
||||
intent.putExtra("hide", true);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
} else if (currentFirstVisibleItem < lastFirstVisibleItem) {
|
||||
Intent intent = new Intent(Helper.HEADER_ACCOUNT + instanceValue);
|
||||
intent.putExtra("hide", false);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
|
||||
}
|
||||
} else {
|
||||
nextElementLoader.setVisibility(View.GONE);
|
||||
lastFirstVisibleItem = currentFirstVisibleItem;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if(firstVisibleItem + visibleItemCount == totalItemCount ) {
|
||||
if(!flag_loading ) {
|
||||
flag_loading = true;
|
||||
if( type == RetrieveFeedsAsyncTask.Type.USER)
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, targetedId, max_id, showMediaOnly, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else if( type == RetrieveFeedsAsyncTask.Type.TAG)
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, tag, targetedId, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
else
|
||||
asyncTask = new RetrieveFeedsAsyncTask(context, type, max_id, DisplayStatusFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
|
||||
nextElementLoader.setVisibility(View.VISIBLE);
|
||||
}
|
||||
} else {
|
||||
nextElementLoader.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue