[mobile] support mange detail - part 1

pull/142/head
FongMi 3 years ago
parent b786a04b45
commit 3eaca1ec68
  1. 29
      app/src/mobile/AndroidManifest.xml
  2. 185
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/TypeFragment.java
  4. 24
      app/src/mobile/res/layout/activity_detail.xml

@ -81,14 +81,14 @@
android:screenOrientation="fullUser" />
<activity
android:name=".ui.activity.VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:screenOrientation="fullUser"
android:supportsPictureInPicture="true"
android:theme="@style/AppTheme.Detail" />
android:name=".ui.activity.DetailActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout"
android:screenOrientation="fullUser" />
<activity
android:name=".ui.activity.FolderActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout"
android:screenOrientation="fullUser" />
<activity
android:name=".ui.activity.HistoryActivity"
@ -110,14 +110,19 @@
android:supportsPictureInPicture="true" />
<activity
android:name=".ui.activity.FolderActivity"
android:name=".ui.activity.ScanActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout"
android:screenOrientation="fullUser" />
<activity
android:name=".ui.activity.ScanActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout"
android:screenOrientation="fullUser" />
android:name=".ui.activity.VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:excludeFromRecents="true"
android:launchMode="singleTask"
android:resizeableActivity="true"
android:screenOrientation="fullUser"
android:supportsPictureInPicture="true"
android:theme="@style/AppTheme.Detail" />
<service
android:name="com.android.cast.dlna.dmc.DLNACastService"

@ -0,0 +1,185 @@
package com.fongmi.android.tv.ui.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.TextView;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.media3.common.util.Log;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.api.ApiConfig;
import com.fongmi.android.tv.bean.Episode;
import com.fongmi.android.tv.bean.Flag;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.ActivityDetailBinding;
import com.fongmi.android.tv.db.AppDatabase;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.adapter.EpisodeAdapter;
import com.fongmi.android.tv.ui.adapter.FlagAdapter;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.base.ViewType;
import com.fongmi.android.tv.ui.custom.SpaceItemDecoration;
import com.fongmi.android.tv.utils.ImgUtil;
import com.fongmi.android.tv.utils.Notify;
import com.google.gson.Gson;
public class DetailActivity extends BaseActivity implements EpisodeAdapter.OnClickListener {
private ActivityDetailBinding mBinding;
private EpisodeAdapter mEpisodeAdapter;
private SiteViewModel mViewModel;
private FlagAdapter mFlagAdapter;
public static void start(Activity activity, String key, String id, String name) {
start(activity, key, id, name, null, null);
}
public static void start(Activity activity, String key, String id, String name, String pic) {
start(activity, key, id, name, pic, null);
}
public static void start(Activity activity, String key, String id, String name, String pic, String mark) {
Intent intent = new Intent(activity, DetailActivity.class);
intent.putExtra("mark", mark);
intent.putExtra("name", name);
intent.putExtra("pic", pic);
intent.putExtra("key", key);
intent.putExtra("id", id);
activity.startActivity(intent);
}
private String getName() {
return getIntent().getStringExtra("name");
}
private String getPic() {
return getIntent().getStringExtra("pic");
}
private String getMark() {
return getIntent().getStringExtra("mark");
}
private String getKey() {
return getIntent().getStringExtra("key");
}
private String getId() {
return getIntent().getStringExtra("id");
}
private String getHistoryKey() {
return getKey().concat(AppDatabase.SYMBOL).concat(getId()).concat(AppDatabase.SYMBOL) + ApiConfig.getCid();
}
private Site getSite() {
return ApiConfig.get().getSite(getKey());
}
private Flag getFlag() {
return mFlagAdapter.getActivated();
}
private Episode getEpisode() {
return mEpisodeAdapter.getActivated();
}
private boolean isFromCollect() {
return getCallingActivity() != null && getCallingActivity().getShortClassName().contains(CollectActivity.class.getSimpleName());
}
@Override
protected ViewBinding getBinding() {
return mBinding = ActivityDetailBinding.inflate(getLayoutInflater());
}
@Override
protected void initView(Bundle savedInstanceState) {
mBinding.progressLayout.showProgress();
setViewModel();
getDetail();
}
@Override
protected void initEvent() {
}
private void setRecyclerView() {
//mBinding.flag.setHasFixedSize(true);
//mBinding.flag.setItemAnimator(null);
//mBinding.flag.addItemDecoration(new SpaceItemDecoration(8));
//mBinding.flag.setAdapter(mFlagAdapter = new FlagAdapter(this));
mBinding.episode.setHasFixedSize(true);
mBinding.episode.setItemAnimator(null);
mBinding.episode.addItemDecoration(new SpaceItemDecoration(8));
mBinding.episode.setAdapter(mEpisodeAdapter = new EpisodeAdapter(this, ViewType.LIST));
}
private void setViewModel() {
mViewModel = new ViewModelProvider(this).get(SiteViewModel.class);
mViewModel.result.observe(this, this::setDetail);
mViewModel.player.observe(this, new Observer<Result>() {
@Override
public void onChanged(Result result) {
}
});
}
private void getDetail() {
mViewModel.detailContent(getKey(), getId());
}
private void setDetail(Result result) {
mBinding.swipeLayout.setRefreshing(false);
Log.e("DDD", new Gson().toJson(result));
if (result.getList().isEmpty()) setEmpty();
else setDetail(result.getList().get(0));
Notify.show(result.getMsg());
}
private void setEmpty() {
if (isFromCollect()) {
finish();
} else {
showEmpty();
}
}
private void showEmpty() {
mBinding.swipeLayout.setEnabled(true);
mBinding.progressLayout.showEmpty();
}
private void setDetail(Vod item) {
mBinding.progressLayout.showContent();
mBinding.name.setText(item.getVodName(getName()));
setText(mBinding.site, R.string.detail_site, getSite().getName());
setText(mBinding.content, 0, Html.fromHtml(item.getVodContent()).toString());
setText(mBinding.director, R.string.detail_director, Html.fromHtml(item.getVodDirector()).toString());
ImgUtil.load(item.getVodPic(getPic()), mBinding.pic);
//mFlagAdapter.addAll(item.getVodFlags());
//checkHistory(item);
//checkFlag(item);
//checkKeepImg();
}
private void setText(TextView view, int resId, String text) {
view.setVisibility(text.isEmpty() ? View.GONE : View.VISIBLE);
view.setText(resId > 0 ? getString(resId, text) : text);
view.setTag(text);
}
@Override
public void onItemClick(Episode item) {
}
}

@ -22,6 +22,7 @@ import com.fongmi.android.tv.bean.Vod;
import com.fongmi.android.tv.databinding.FragmentTypeBinding;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.activity.CollectActivity;
import com.fongmi.android.tv.ui.activity.DetailActivity;
import com.fongmi.android.tv.ui.activity.VideoActivity;
import com.fongmi.android.tv.ui.adapter.VodAdapter;
import com.fongmi.android.tv.ui.base.BaseFragment;
@ -213,8 +214,8 @@ public class TypeFragment extends BaseFragment implements CustomScroller.Callbac
mPages.add(Page.get(item.getVodId(), findPosition()));
getVideo(item.getVodId(), "1");
} else {
if (!isFolder()) VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), item.getVodName());
if (item.isManga()) DetailActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic());
else VideoActivity.start(getActivity(), getKey(), item.getVodId(), item.getVodName(), item.getVodPic(), isFolder() ? item.getVodName() : null);
}
}

@ -2,19 +2,27 @@
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<RelativeLayout
<com.fongmi.android.tv.ui.custom.ProgressLayout
android:id="@+id/progressLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
android:layout_height="match_parent">
<ImageView
<com.google.android.material.imageview.ShapeableImageView
android:id="@+id/pic"
android:layout_width="120dp"
android:layout_height="168dp"
android:layout_margin="16dp" />
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:elevation="4dp"
android:scaleType="centerCrop"
app:shapeAppearance="@style/Vod.Grid" />
<LinearLayout
android:id="@+id/info"
@ -38,7 +46,7 @@
tools:text="海賊王" />
<TextView
android:id="@+id/author"
android:id="@+id/director"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
@ -111,5 +119,5 @@
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:stackFromEnd="true" />
</RelativeLayout>
</com.fongmi.android.tv.ui.custom.ProgressLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
Loading…
Cancel
Save