[mobile] optimize UX

pull/123/head
FongMi 3 years ago
parent dc7369a493
commit 90b5795b04
  1. 6
      app/src/main/java/com/fongmi/android/tv/utils/Utils.java
  2. 14
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  3. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java
  4. 341
      app/src/mobile/res/layout/activity_detail.xml
  5. 2
      app/src/mobile/res/layout/activity_main.xml
  6. 2
      app/src/mobile/res/layout/adapter_search.xml
  7. 12
      app/src/mobile/res/layout/fragment_home.xml

@ -6,7 +6,6 @@ import android.app.PictureInPictureParams;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.os.IBinder;
@ -109,14 +108,11 @@ public class Utils {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && App.get().getPackageManager().hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE);
}
public static void enterPIP(Activity activity, Rect sourceRectHint, Rational rational) {
public static void enterPIP(Activity activity, Rational rational) {
try {
if (!hasPIP() || activity.isInPictureInPictureMode()) return;
PictureInPictureParams.Builder builder = new PictureInPictureParams.Builder();
builder.setAspectRatio(rational).build();
builder.setSourceRectHint(sourceRectHint);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) builder.setAutoEnterEnabled(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) builder.setSeamlessResizeEnabled(true);
activity.enterPictureInPictureMode(builder.build());
} catch (Exception e) {
e.printStackTrace();

@ -5,7 +5,6 @@ import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.Html;
import android.util.Rational;
@ -180,6 +179,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
mBinding.swipeLayout.setRefreshing(true);
getIntent().putExtras(intent);
setOrient();
getDetail();
@ -189,6 +189,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
protected void initView(Bundle savedInstanceState) {
mKeyDown = CustomKeyDownVod.create(this, mBinding.video);
mFrameParams = mBinding.video.getLayoutParams();
mBinding.progressLayout.showProgress();
mPlayers = new Players().init();
mR1 = this::hideControl;
mR2 = this::setTraffic;
@ -204,7 +205,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
@Override
@SuppressLint("ClickableViewAccessibility")
protected void initEvent() {
mBinding.control.seek.setListener(mPlayers);
mBinding.name.setOnClickListener(view -> onName());
mBinding.content.setOnClickListener(view -> onContent());
mBinding.reverse.setOnClickListener(view -> onReverse());
@ -231,6 +231,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.control.action.opening.setOnLongClickListener(view -> onOpeningReset());
mBinding.video.setOnTouchListener((view, event) -> mKeyDown.onTouchEvent(event));
mBinding.control.action.getRoot().setOnTouchListener(this::onActionTouch);
mBinding.swipeLayout.setOnRefreshListener(this::getDetail);
mBinding.control.seek.setListener(mPlayers);
}
private void setRecyclerView() {
@ -283,19 +285,20 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mPlayers.start(result, isUseParse(), timeout);
});
mViewModel.result.observe(this, result -> {
mBinding.swipeLayout.setRefreshing(false);
if (result.getList().isEmpty()) setEmpty();
else setDetail(result.getList().get(0));
});
}
private void getDetail() {
mBinding.progressLayout.showProgress();
mViewModel.detailContent(getKey(), getId());
}
private void getDetail(Vod item) {
getIntent().putExtra("key", item.getSiteKey());
getIntent().putExtra("id", item.getVodId());
mBinding.swipeLayout.setRefreshing(true);
mBinding.scroll.scrollTo(0, 0);
Clock.get().setCallback(null);
mPlayers.stop();
@ -1046,9 +1049,8 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Rect sourceRectHint = new Rect();
mBinding.video.getGlobalVisibleRect(sourceRectHint);
Utils.enterPIP(this, sourceRectHint, getScale() == 2 ? new Rational(4, 3) : new Rational(16, 9));
Utils.enterPIP(this, getScale() == 2 ? new Rational(4, 3) : new Rational(16, 9));
if (isLock()) onLock();
}
@Override

@ -45,7 +45,6 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
@Override
protected void initView(Bundle savedInstanceState) {
initFragment(savedInstanceState);
Notify.progress(this);
Updater.get().start();
Server.get().start();
initConfig();
@ -83,13 +82,11 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt
public void success() {
checkAction(getIntent());
RefreshEvent.video();
Notify.dismiss();
}
@Override
public void error(int resId) {
Notify.show(resId);
Notify.dismiss();
}
};
}

@ -57,200 +57,207 @@
android:layout_height="4dp"
android:layout_below="@+id/video" />
<com.fongmi.android.tv.ui.custom.ProgressLayout
android:id="@+id/progressLayout"
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/video">
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll"
<com.fongmi.android.tv.ui.custom.ProgressLayout
android:id="@+id/progressLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
android:layout_height="match_parent">
<LinearLayout
<androidx.core.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="8dp">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="20sp"
android:textStyle="bold"
tools:text="慶餘年第二季" />
android:fillViewport="true">
<TextView
android:id="@+id/remark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
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_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="站源:泥巴" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingBottom="8dp">
<TextView
android:id="@+id/other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="年份:2022 地區:台灣 類型:科幻" />
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
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_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="導演:FongMi" />
<TextView
android:id="@+id/remark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="更新到第二季" />
<TextView
android:id="@+id/actor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="演員:FongMi" />
<TextView
android:id="@+id/site"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="站源:泥巴" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/detail_flag"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:id="@+id/other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="年份:2022 地區:台灣 類型:科幻" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/flag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<TextView
android:id="@+id/director"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="導演:FongMi" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical">
<TextView
android:id="@+id/actor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="演員:FongMi" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detail_episode"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/detail_flag"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/reverse"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_detail_reverse"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/flag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/episode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/detail_episode"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/detail_content"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/reverse"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_detail_reverse"
android:visibility="gone" />
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:lineSpacingExtra="4dp"
android:maxLines="2"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="一個身世神秘的少年范閒(張若昀飾),因對自身身世的好奇而離開故鄉澹州,前赴南慶京都。范閒在京中各大勢力之間遊走,以探查自己屢遭刺殺的原因。其間結識靖王世子、二皇子,與太子、長公主等人對抗,並遊歷四方、闖蕩江湖,卻意外發現這世界隱藏著的秘密。本劇第一季上半部主要描述范閒在南慶京都追查刺殺的幕後黑手,京中各式人等對范閒繼承內庫的態度和應對,以及監察院院長陳萍萍希望范閒接掌監察院所做的一切舉動。下半部劇情發生在北齊上京。南慶駐北齊上京諜報首領言冰雲被北齊官方抓獲,慶帝與陳萍萍同意用已被關在監察院大牢多年的前北魏諜報首領肖恩交換言冰雲,並派范閒親率南慶使團負責此事。" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/episode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="horizontal"
android:paddingStart="16dp"
android:paddingEnd="16dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="@string/detail_content"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</com.fongmi.android.tv.ui.custom.ProgressLayout>
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="8dp"
android:ellipsize="end"
android:lineSpacingExtra="4dp"
android:maxLines="2"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="一個身世神秘的少年范閒(張若昀飾),因對自身身世的好奇而離開故鄉澹州,前赴南慶京都。范閒在京中各大勢力之間遊走,以探查自己屢遭刺殺的原因。其間結識靖王世子、二皇子,與太子、長公主等人對抗,並遊歷四方、闖蕩江湖,卻意外發現這世界隱藏著的秘密。本劇第一季上半部主要描述范閒在南慶京都追查刺殺的幕後黑手,京中各式人等對范閒繼承內庫的態度和應對,以及監察院院長陳萍萍希望范閒接掌監察院所做的一切舉動。下半部劇情發生在北齊上京。南慶駐北齊上京諜報首領言冰雲被北齊官方抓獲,慶帝與陳萍萍同意用已被關在監察院大牢多年的前北魏諜報首領肖恩交換言冰雲,並派范閒親率南慶使團負責此事。" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:nestedScrollingEnabled="false"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:visibility="gone"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="2" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</com.fongmi.android.tv.ui.custom.ProgressLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</RelativeLayout>

@ -16,7 +16,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/white_80"
android:background="@color/white_70"
app:elevation="0dp"
app:menu="@menu/menu_nav" />

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="120dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:background="@drawable/shape_item"

@ -14,6 +14,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="4dp"
android:text="@string/home_history"
android:textColor="@color/white"
android:textSize="18sp"
@ -25,13 +26,17 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="8dp" />
android:paddingStart="8dp"
android:paddingTop="0dp"
android:paddingEnd="8dp"
android:paddingBottom="4dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="4dp"
android:text="@string/home_recommend"
android:textColor="@color/white"
android:textSize="18sp"
@ -48,7 +53,10 @@
android:layout_height="match_parent"
android:clipChildren="false"
android:clipToPadding="false"
android:padding="8dp" />
android:paddingStart="8dp"
android:paddingTop="0dp"
android:paddingEnd="8dp"
android:paddingBottom="8dp" />
</com.fongmi.android.tv.ui.custom.ProgressLayout>
</LinearLayout>

Loading…
Cancel
Save