mirror of https://github.com/FongMi/TV.git
parent
8b0fd6e2ea
commit
a0eb5581ba
@ -0,0 +1,8 @@ |
||||
<?xml version="1.0" encoding="utf-8"?> |
||||
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" |
||||
xmlns:app="http://schemas.android.com/apk/res-auto" |
||||
android:id="@+id/recycler" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:padding="16dp" |
||||
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" /> |
||||
@ -0,0 +1,10 @@ |
||||
package com.fongmi.android.tv.bean; |
||||
|
||||
public class Track { |
||||
|
||||
private String name; |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
} |
||||
@ -0,0 +1,69 @@ |
||||
package com.fongmi.android.tv.ui.adapter; |
||||
|
||||
import android.view.LayoutInflater; |
||||
import android.view.View; |
||||
import android.view.ViewGroup; |
||||
|
||||
import androidx.annotation.NonNull; |
||||
import androidx.recyclerview.widget.RecyclerView; |
||||
|
||||
import com.fongmi.android.tv.bean.Track; |
||||
import com.fongmi.android.tv.databinding.AdapterTrackBinding; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
|
||||
public class TrackAdapter extends RecyclerView.Adapter<TrackAdapter.ViewHolder> { |
||||
|
||||
private final OnClickListener mListener; |
||||
private final List<Track> mItems; |
||||
|
||||
public TrackAdapter(OnClickListener listener) { |
||||
this.mListener = listener; |
||||
this.mItems = new ArrayList<>(); |
||||
} |
||||
|
||||
public interface OnClickListener { |
||||
|
||||
void onItemClick(Track item); |
||||
} |
||||
|
||||
public void addAll(List<Track> items) { |
||||
mItems.clear(); |
||||
mItems.addAll(items); |
||||
notifyDataSetChanged(); |
||||
} |
||||
|
||||
@Override |
||||
public int getItemCount() { |
||||
return mItems.size(); |
||||
} |
||||
|
||||
@NonNull |
||||
@Override |
||||
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
||||
return new ViewHolder(AdapterTrackBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); |
||||
} |
||||
|
||||
@Override |
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { |
||||
Track item = mItems.get(position); |
||||
holder.binding.text.setText(item.getName()); |
||||
} |
||||
|
||||
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { |
||||
|
||||
private final AdapterTrackBinding binding; |
||||
|
||||
public ViewHolder(@NonNull AdapterTrackBinding binding) { |
||||
super(binding.getRoot()); |
||||
this.binding = binding; |
||||
itemView.setOnClickListener(this); |
||||
} |
||||
|
||||
@Override |
||||
public void onClick(View view) { |
||||
mListener.onItemClick(mItems.get(getLayoutPosition())); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,66 @@ |
||||
package com.fongmi.android.tv.ui.custom; |
||||
|
||||
import android.app.Activity; |
||||
import android.view.LayoutInflater; |
||||
import android.view.WindowManager; |
||||
|
||||
import androidx.appcompat.app.AlertDialog; |
||||
|
||||
import com.fongmi.android.tv.bean.Track; |
||||
import com.fongmi.android.tv.databinding.DialogTrackBinding; |
||||
import com.fongmi.android.tv.player.ExoUtil; |
||||
import com.fongmi.android.tv.player.Players; |
||||
import com.fongmi.android.tv.ui.adapter.TrackAdapter; |
||||
import com.fongmi.android.tv.utils.ResUtil; |
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder; |
||||
|
||||
public final class TrackSelectionDialog2 implements TrackAdapter.OnClickListener { |
||||
|
||||
private final DialogTrackBinding binding; |
||||
private final TrackAdapter adapter; |
||||
private final AlertDialog dialog; |
||||
private int trackType; |
||||
|
||||
public static TrackSelectionDialog2 create(Activity activity) { |
||||
return new TrackSelectionDialog2(activity); |
||||
} |
||||
|
||||
public TrackSelectionDialog2(Activity activity) { |
||||
this.binding = DialogTrackBinding.inflate(LayoutInflater.from(activity)); |
||||
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); |
||||
this.adapter = new TrackAdapter(this); |
||||
} |
||||
|
||||
public void show() { |
||||
setRecyclerView(); |
||||
setDialog(); |
||||
} |
||||
|
||||
private void setRecyclerView() { |
||||
binding.recycler.setHasFixedSize(true); |
||||
binding.recycler.addItemDecoration(new SpaceItemDecoration(1, 16)); |
||||
binding.recycler.setAdapter(adapter); |
||||
} |
||||
|
||||
private void setDialog() { |
||||
if (adapter.getItemCount() == 0) return; |
||||
WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); |
||||
params.width = (int) (ResUtil.getScreenWidthPx() * 0.4f); |
||||
dialog.getWindow().setAttributes(params); |
||||
dialog.getWindow().setDimAmount(0); |
||||
dialog.show(); |
||||
} |
||||
|
||||
public static boolean haveTrack(Players player, int type) { |
||||
if (player.isExo()) { |
||||
return ExoUtil.haveTrack(player.exo().getCurrentTracks(), type); |
||||
} else { |
||||
return player.ijk().haveTrack(type); |
||||
} |
||||
} |
||||
|
||||
@Override |
||||
public void onItemClick(Track item) { |
||||
|
||||
} |
||||
} |
||||
@ -0,0 +1,10 @@ |
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" |
||||
android:width="24dp" |
||||
android:height="24dp" |
||||
android:tint="#FFFFFF" |
||||
android:viewportWidth="24" |
||||
android:viewportHeight="24"> |
||||
<path |
||||
android:fillColor="#FFFFFF" |
||||
android:pathData="M16,9v10H8V9h8m-1.5,-6h-5l-1,1H5v2h14V4h-3.5l-1,-1zM18,7H6v12c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7z" /> |
||||
</vector> |
||||
@ -0,0 +1,22 @@ |
||||
<?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="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:orientation="horizontal"> |
||||
|
||||
<TextView |
||||
android:id="@+id/text" |
||||
android:layout_width="match_parent" |
||||
android:layout_height="wrap_content" |
||||
android:background="@drawable/selector_text" |
||||
android:ellipsize="middle" |
||||
android:focusable="true" |
||||
android:focusableInTouchMode="true" |
||||
android:gravity="center" |
||||
android:singleLine="true" |
||||
android:textColor="@color/text" |
||||
android:textSize="18sp" |
||||
tools:text="中文、哥斯拉.srt" /> |
||||
|
||||
</LinearLayout> |
||||
Loading…
Reference in new issue