Dynamic calculate vod layout size

pull/21/head
FongMi 4 years ago
parent 1ddd86a877
commit 2da6b3a16d
  1. 7
      app/src/main/java/com/fongmi/bear/bean/Result.java
  2. 17
      app/src/main/java/com/fongmi/bear/ui/activity/BaseActivity.java
  3. 2
      app/src/main/java/com/fongmi/bear/ui/activity/HomeActivity.java
  4. 2
      app/src/main/java/com/fongmi/bear/ui/fragment/VodFragment.java
  5. 17
      app/src/main/java/com/fongmi/bear/ui/presenter/VodPresenter.java
  6. 6
      app/src/main/java/com/fongmi/bear/utils/Utils.java

@ -78,8 +78,11 @@ public class Result {
}
public List<List<Vod>> partition() {
if (getList().size() % 6 == 0) return Lists.partition(getList(), 6);
else return Lists.partition(getList(), 5);
return Lists.partition(getList(), getColumns());
}
public int getColumns() {
return getList().size() % 6 == 0 ? 6 : 5;
}
@NonNull

@ -1,11 +1,15 @@
package com.fongmi.bear.ui.activity;
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewbinding.ViewBinding;
import com.fongmi.bear.utils.Utils;
public abstract class BaseActivity extends AppCompatActivity {
protected abstract ViewBinding getBinding();
@ -14,6 +18,7 @@ public abstract class BaseActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getBinding().getRoot());
Utils.hideSystemUI(this);
initView();
initEvent();
}
@ -27,4 +32,16 @@ public abstract class BaseActivity extends AppCompatActivity {
protected void initEvent() {
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Utils.hideSystemUI(this);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) Utils.hideSystemUI(this);
}
}

@ -89,7 +89,7 @@ public class HomeActivity extends BaseActivity implements VodPresenter.OnClickLi
mAdapter.remove("progress");
if (result == null) return;
for (List<Vod> items : result.partition()) {
VodPresenter presenter = new VodPresenter(items.size());
VodPresenter presenter = new VodPresenter(result.getColumns());
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenter);
presenter.setOnClickListener(this);
adapter.addAll(0, items);

@ -93,7 +93,7 @@ public class VodFragment extends Fragment implements Scroller.Callback, VodPrese
if (result == null) return;
mScroller.endLoading(result.getList().isEmpty());
for (List<Vod> items : result.partition()) {
VodPresenter presenter = new VodPresenter(items.size());
VodPresenter presenter = new VodPresenter(result.getColumns());
ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenter);
presenter.setOnClickListener(this);
adapter.addAll(0, items);

@ -13,10 +13,10 @@ import com.fongmi.bear.utils.ResUtil;
public class VodPresenter extends Presenter {
private OnClickListener mListener;
private final int mCount;
private int width, height;
public VodPresenter(int count) {
mCount = count;
public VodPresenter(int columns) {
setLayoutSize(columns);
}
public interface OnClickListener {
@ -27,11 +27,18 @@ public class VodPresenter extends Presenter {
this.mListener = listener;
}
private void setLayoutSize(int columns) {
int space = ResUtil.dp2px(16) * (columns - 1) + ResUtil.dp2px(48);
int base = ResUtil.getScreenWidthPx() - space;
width = (int) base / columns;
height = (int) (width / 0.75);
}
@Override
public Presenter.ViewHolder onCreateViewHolder(ViewGroup parent) {
ViewHolder holder = new ViewHolder(AdapterVodBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
holder.binding.getRoot().getLayoutParams().width = ResUtil.dp2px(mCount == 5 ? 150 : 144);
holder.binding.getRoot().getLayoutParams().height = ResUtil.dp2px(mCount == 5 ? 200 : 192);
holder.binding.getRoot().getLayoutParams().width = width;
holder.binding.getRoot().getLayoutParams().height = height;
return holder;
}

@ -6,6 +6,7 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.provider.Settings;
import android.util.Rational;
import android.view.View;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
@ -38,6 +39,11 @@ public class Utils {
}
}
public static void hideSystemUI(Activity activity) {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
activity.getWindow().getDecorView().setSystemUiVisibility(flags);
}
public static String getUUID() {
return Settings.Secure.getString(App.get().getContentResolver(), Settings.Secure.ANDROID_ID);
}

Loading…
Cancel
Save