mirror of https://github.com/FongMi/TV.git
parent
01cf6423a1
commit
f3844086c4
@ -1,236 +0,0 @@ |
||||
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.text.TextUtils; |
||||
import android.view.View; |
||||
import android.widget.TextView; |
||||
|
||||
import androidx.lifecycle.Observer; |
||||
import androidx.lifecycle.ViewModelProvider; |
||||
import androidx.viewbinding.ViewBinding; |
||||
|
||||
import com.fongmi.android.tv.R; |
||||
import com.fongmi.android.tv.api.config.VodConfig; |
||||
import com.fongmi.android.tv.bean.Episode; |
||||
import com.fongmi.android.tv.bean.Flag; |
||||
import com.fongmi.android.tv.bean.History; |
||||
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.event.ErrorEvent; |
||||
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 java.util.List; |
||||
|
||||
public class DetailActivity extends BaseActivity implements FlagAdapter.OnClickListener, EpisodeAdapter.OnClickListener { |
||||
|
||||
private ActivityDetailBinding mBinding; |
||||
private EpisodeAdapter mEpisodeAdapter; |
||||
private SiteViewModel mViewModel; |
||||
private FlagAdapter mFlagAdapter; |
||||
private History mHistory; |
||||
|
||||
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) + VodConfig.getCid(); |
||||
} |
||||
|
||||
private Site getSite() { |
||||
return VodConfig.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(); |
||||
setRecyclerView(); |
||||
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.setAdapter(mEpisodeAdapter = new EpisodeAdapter(this, ViewType.VERT)); |
||||
} |
||||
|
||||
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) { |
||||
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.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.rect(item.getVodName(), 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); |
||||
} |
||||
|
||||
private void checkHistory(Vod item) { |
||||
mHistory = History.find(getHistoryKey()); |
||||
mHistory = mHistory == null ? createHistory(item) : mHistory; |
||||
if (!TextUtils.isEmpty(getMark())) mHistory.setVodRemarks(getMark()); |
||||
} |
||||
|
||||
private History createHistory(Vod item) { |
||||
History history = new History(); |
||||
history.setKey(getHistoryKey()); |
||||
history.setCid(VodConfig.getCid()); |
||||
history.setVodPic(item.getVodPic()); |
||||
history.setVodName(item.getVodName()); |
||||
history.findEpisode(item.getVodFlags()); |
||||
return history; |
||||
} |
||||
|
||||
private void checkFlag(Vod item) { |
||||
boolean empty = item.getVodFlags().isEmpty(); |
||||
mBinding.flag.setVisibility(empty ? View.GONE : View.VISIBLE); |
||||
if (empty) { |
||||
ErrorEvent.flag(); |
||||
} else { |
||||
onItemClick(mHistory.getFlag()); |
||||
if (mHistory.isRevSort()) reverseEpisode(true); |
||||
} |
||||
} |
||||
|
||||
private void reverseEpisode(boolean scroll) { |
||||
mFlagAdapter.reverse(); |
||||
setEpisodeAdapter(getFlag().getEpisodes()); |
||||
if (scroll) mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition()); |
||||
} |
||||
|
||||
private void setEpisodeAdapter(List<Episode> items) { |
||||
mBinding.episode.setVisibility(items.isEmpty() ? View.GONE : View.VISIBLE); |
||||
mEpisodeAdapter.addAll(items); |
||||
} |
||||
|
||||
private void checkKeepImg() { |
||||
//mBinding.keep.setImageResource(Keep.find(getHistoryKey()) == null ? R.drawable.ic_control_keep_off : R.drawable.ic_control_keep_on);
|
||||
} |
||||
|
||||
@Override |
||||
public void onItemClick(Flag item) { |
||||
if (item.isActivated()) return; |
||||
mFlagAdapter.setActivated(item); |
||||
mBinding.flag.scrollToPosition(mFlagAdapter.getPosition()); |
||||
setEpisodeAdapter(item.getEpisodes()); |
||||
} |
||||
|
||||
@Override |
||||
public void onItemClick(Episode item) { |
||||
|
||||
} |
||||
} |
||||
@ -1,13 +0,0 @@ |
||||
package com.fongmi.android.tv.ui.activity; |
||||
|
||||
import androidx.viewbinding.ViewBinding; |
||||
|
||||
import com.fongmi.android.tv.ui.base.BaseActivity; |
||||
|
||||
public class MangaActivity extends BaseActivity { |
||||
|
||||
@Override |
||||
protected ViewBinding getBinding() { |
||||
return null; |
||||
} |
||||
} |
||||
@ -1,117 +0,0 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<LinearLayout 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:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:fitsSystemWindows="true" |
||||
android:orientation="vertical"> |
||||
|
||||
<androidx.core.widget.NestedScrollView |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent" |
||||
android:fillViewport="true"> |
||||
|
||||
<com.fongmi.android.tv.ui.custom.ProgressLayout |
||||
android:id="@+id/progressLayout" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="match_parent"> |
||||
|
||||
<com.google.android.material.imageview.ShapeableImageView |
||||
android:id="@+id/pic" |
||||
android:layout_width="120dp" |
||||
android:layout_height="168dp" |
||||
android:layout_marginStart="16dp" |
||||
android:layout_marginTop="16dp" |
||||
android:layout_marginEnd="16dp" |
||||
android:scaleType="centerCrop" |
||||
app:shapeAppearance="@style/Vod.Grid" /> |
||||
|
||||
<LinearLayout |
||||
android:id="@+id/info" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="16dp" |
||||
android:layout_marginEnd="16dp" |
||||
android:layout_toEndOf="@+id/pic" |
||||
android:gravity="center_vertical" |
||||
android:minHeight="168dp" |
||||
android:orientation="vertical"> |
||||
|
||||
<TextView |
||||
android:id="@+id/name" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:ellipsize="end" |
||||
android:textColor="@color/white" |
||||
android:textSize="20sp" |
||||
android:textStyle="bold" |
||||
tools:text="海賊王" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/director" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="8dp" |
||||
android:singleLine="true" |
||||
android:textColor="@color/white" |
||||
android:textSize="14sp" |
||||
tools:text="尾田榮一郎" /> |
||||
|
||||
<TextView |
||||
android:id="@+id/site" |
||||
android:layout_width="wrap_content" |
||||
android:layout_height="wrap_content" |
||||
android:layout_marginTop="8dp" |
||||
android:singleLine="true" |
||||
android:textColor="@color/white" |
||||
android:textSize="14sp" |
||||
tools:text="漫畫人" /> |
||||
|
||||
</LinearLayout> |
||||
|
||||
<TextView |
||||
android:id="@+id/content" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_below="@+id/info" |
||||
android:layout_marginStart="16dp" |
||||
android:layout_marginTop="16dp" |
||||
android:layout_marginEnd="16dp" |
||||
android:ellipsize="end" |
||||
android:lineSpacingExtra="4dp" |
||||
android:maxLines="2" |
||||
android:textColor="@color/white" |
||||
android:textSize="14sp" |
||||
tools:text="相傳22年前,在一個童話般的世界裡,曾經擁有一切的海賊王在走上斷頭台的時候對人們狂笑道:“想要我的財寶是嗎,想要就給你們!去找吧,全世界的寶藏都在那裡!”……自此開始,全世界勇敢的男人都離開了平庸的生活,走向了大海,向著埋藏海賊王寶藏的偉大航道挺進!世界簡直成為了大海賊時代!在某個村子的小孩莫奇。 D.路飛對“海賊王”甚為仰慕,立志要成為新一代的海賊王。因此他希望駐紮在村子的海盜團能帶他出海,可是遭船長紅發撒古斯拒絕。有一天路飛不小心偷吃了撒古斯帶來的戰利品-惡魔果實,成為了永遠不能游泳的橡皮人,令他的海盜夢想泡湯。後來路飛被一群討厭撒古斯的人捉了,在被海獸吃掉之際,被撒古斯救走,而撒古斯的手也犧牲了。撒古斯臨行前將草帽送給路飛,使他重燃起當海賊王的決心。事隔十年,苦練一身橡皮絕技的少年路飛揚帆出發,開始找尋One Piece的冒險…… 傳說開始了! !大家帶著新的誓言,終到達了“偉大航道”的入口。路飛他們攀山、過海,眼看就要闖進去了,面前郤出現了一個黑團? !圍繞著“大秘寶one piece”而展開的海洋冒險故事現在開始!" /> |
||||
|
||||
<androidx.recyclerview.widget.RecyclerView |
||||
android:id="@+id/flag" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_below="@+id/content" |
||||
android:layout_marginTop="16dp" |
||||
android:clipChildren="false" |
||||
android:clipToPadding="false" |
||||
android:orientation="horizontal" |
||||
android:paddingStart="16dp" |
||||
android:paddingEnd="16dp" |
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" |
||||
tools:listitem="@layout/adapter_flag" /> |
||||
|
||||
<androidx.recyclerview.widget.RecyclerView |
||||
android:id="@+id/episode" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:layout_below="@+id/flag" |
||||
android:clipChildren="false" |
||||
android:clipToPadding="false" |
||||
android:nestedScrollingEnabled="false" |
||||
android:orientation="vertical" |
||||
android:padding="8dp" |
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" |
||||
tools:listitem="@layout/adapter_episode_vert" /> |
||||
|
||||
</com.fongmi.android.tv.ui.custom.ProgressLayout> |
||||
</androidx.core.widget.NestedScrollView> |
||||
</LinearLayout> |
||||
Loading…
Reference in new issue