Skip to content

Commit 433baa2

Browse files
committed
旋转
1 parent db33227 commit 433baa2

13 files changed

+240
-3
lines changed

iplayer/src/main/java/com/hacknife/iplayer/Iplayer.java

+28-2
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,19 @@
2323
import android.widget.SeekBar;
2424
import android.widget.TextView;
2525
import android.widget.Toast;
26+
2627
import java.text.SimpleDateFormat;
2728
import java.util.Date;
2829
import java.util.Timer;
2930
import java.util.TimerTask;
31+
3032
import com.hacknife.iplayer.R;
3133

3234
/**
3335
* Created by Nathen
3436
* On 2016/04/18 16:15
3537
*/
36-
public class Iplayer extends Video {
38+
public class Iplayer extends Video implements SettingView.OnSettingListener {
3739

3840
protected static Timer DISMISS_CONTROL_VIEW_TIMER;
3941

@@ -43,6 +45,7 @@ public class Iplayer extends Video {
4345
public ImageView thumbImageView;
4446
public ImageView tinyBackImageView;
4547
public LinearLayout batteryTimeLayout;
48+
public ImageView setting;
4649
public ImageView batteryLevel;
4750
public TextView videoCurrentTime;
4851
public TextView replayTextView;
@@ -64,6 +67,7 @@ public class Iplayer extends Video {
6467
protected Dialog mBrightnessDialog;
6568
protected ProgressBar mDialogBrightnessProgressBar;
6669
protected TextView mDialogBrightnessTextView;
70+
protected SettingView settingView;
6771
public static long LAST_GET_BATTERYLEVEL_TIME = 0;
6872
public static int LAST_GET_BATTERYLEVEL_PERCENT = 70;
6973

@@ -93,6 +97,7 @@ public Iplayer(Context context, AttributeSet attrs) {
9397
public void init(Context context) {
9498
super.init(context);
9599
batteryTimeLayout = findViewById(R.id.battery_time_layout);
100+
setting = findViewById(R.id.iv_setting);
96101
bottomProgressBar = findViewById(R.id.bottom_progress);
97102
titleTextView = findViewById(R.id.title);
98103
backButton = findViewById(R.id.back);
@@ -105,11 +110,14 @@ public void init(Context context) {
105110
clarity = findViewById(R.id.clarity);
106111
mRetryBtn = findViewById(R.id.retry_btn);
107112
mRetryLayout = findViewById(R.id.retry_layout);
113+
settingView = findViewById(R.id.setting);
108114
thumbImageView.setOnClickListener(this);
109115
backButton.setOnClickListener(this);
110116
tinyBackImageView.setOnClickListener(this);
111117
clarity.setOnClickListener(this);
112118
mRetryBtn.setOnClickListener(this);
119+
setting.setOnClickListener(this);
120+
settingView.setOnSettingListener(this);
113121
}
114122

115123
public void setUp(DataSource dataSource, int screen) {
@@ -120,6 +128,7 @@ public void setUp(DataSource dataSource, int screen) {
120128
backButton.setVisibility(View.VISIBLE);
121129
tinyBackImageView.setVisibility(View.INVISIBLE);
122130
batteryTimeLayout.setVisibility(View.VISIBLE);
131+
setting.setVisibility(View.VISIBLE);
123132
if (dataSource.urlsMap.size() == 1) {
124133
clarity.setVisibility(GONE);
125134
} else {
@@ -134,12 +143,14 @@ public void setUp(DataSource dataSource, int screen) {
134143
tinyBackImageView.setVisibility(View.INVISIBLE);
135144
changeStartButtonSize((int) getResources().getDimension(R.dimen.iplayer_start_button_w_h_normal));
136145
batteryTimeLayout.setVisibility(View.GONE);
146+
setting.setVisibility(View.GONE);
137147
clarity.setVisibility(View.GONE);
138148
} else if (currentScreen == SCREEN_WINDOW_TINY) {
139149
tinyBackImageView.setVisibility(View.VISIBLE);
140150
setAllControlsVisiblity(View.INVISIBLE, View.INVISIBLE, View.INVISIBLE,
141151
View.INVISIBLE, View.INVISIBLE, View.INVISIBLE, View.INVISIBLE);
142152
batteryTimeLayout.setVisibility(View.GONE);
153+
setting.setVisibility(View.GONE);
143154
clarity.setVisibility(View.GONE);
144155
}
145156
setSystemTimeAndBattery();
@@ -344,6 +355,12 @@ public void onClick(View v) {
344355
MediaManager.setDataSource(dataSource);
345356
onStatePreparing();
346357
onEvent(UserAction.ON_CLICK_START_ERROR);
358+
} else if (R.id.iv_setting == v.getId()) {
359+
if (settingView.getVisibility() == View.VISIBLE) {
360+
settingView.setVisibility(View.GONE);
361+
} else {
362+
settingView.setVisibility(View.VISIBLE);
363+
}
347364
}
348365
}
349366

@@ -832,8 +849,17 @@ public void run() {
832849
}
833850
}
834851

835-
public class DismissControlViewTimerTask extends TimerTask {
852+
@Override
853+
public void onRatate(int angle) {
854+
Video.setTextureViewRotation(angle);
855+
}
856+
857+
@Override
858+
public void onSize(int size) {
836859

860+
}
861+
862+
public class DismissControlViewTimerTask extends TimerTask {
837863
@Override
838864
public void run() {
839865
dissmissControlView();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
package com.hacknife.iplayer;
2+
3+
import android.content.Context;
4+
import android.support.annotation.NonNull;
5+
import android.support.annotation.Nullable;
6+
import android.util.AttributeSet;
7+
import android.view.View;
8+
import android.widget.FrameLayout;
9+
import android.widget.TextView;
10+
11+
/**
12+
* author : hacknife
13+
* e-mail : 4884280@qq.com
14+
* github : http://github.com/hacknife
15+
* project : iplayer
16+
*/
17+
public class SettingView extends FrameLayout implements View.OnClickListener {
18+
TextView rotate90;
19+
TextView rotate180;
20+
TextView rotate270;
21+
TextView size4_3;
22+
TextView size16_9;
23+
TextView sizeFull;
24+
25+
public SettingView(@NonNull Context context) {
26+
this(context, null);
27+
}
28+
29+
public SettingView(@NonNull Context context, @Nullable AttributeSet attrs) {
30+
this(context, attrs, 0);
31+
}
32+
33+
public SettingView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
34+
super(context, attrs, defStyleAttr);
35+
View view = View.inflate(context, R.layout.iplayer_layout_setting, null);
36+
addView(view);
37+
rotate90 = view.findViewById(R.id.tv_rotate_90);
38+
rotate180 = view.findViewById(R.id.tv_rotate_180);
39+
rotate270 = view.findViewById(R.id.tv_rotate_270);
40+
size4_3 = view.findViewById(R.id.tv_size_4_3);
41+
size16_9 = view.findViewById(R.id.tv_size_16_9);
42+
sizeFull = view.findViewById(R.id.tv_size_full);
43+
44+
rotate90.setOnClickListener(this);
45+
rotate180.setOnClickListener(this);
46+
rotate270.setOnClickListener(this);
47+
size4_3.setOnClickListener(this);
48+
size16_9.setOnClickListener(this);
49+
sizeFull.setOnClickListener(this);
50+
}
51+
52+
public void resetRotate() {
53+
rotate90.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
54+
rotate180.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
55+
rotate270.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
56+
}
57+
58+
public void resetSize() {
59+
size4_3.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
60+
size16_9.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
61+
sizeFull.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color));
62+
}
63+
64+
@Override
65+
public void onClick(View view) {
66+
if (onSettingListener == null) return;
67+
if (view.getId() == R.id.tv_rotate_90) {
68+
resetRotate();
69+
rotate90.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
70+
onSettingListener.onRatate(90);
71+
}
72+
if (view.getId() == R.id.tv_rotate_180) {
73+
resetRotate();
74+
rotate180.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
75+
onSettingListener.onRatate(180);
76+
}
77+
if (view.getId() == R.id.tv_rotate_270) {
78+
resetRotate();
79+
rotate270.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
80+
onSettingListener.onRatate(270);
81+
}
82+
if (view.getId() == R.id.tv_size_4_3) {
83+
resetSize();
84+
size4_3.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
85+
onSettingListener.onSize(1);
86+
}
87+
if (view.getId() == R.id.tv_size_16_9) {
88+
resetSize();
89+
size16_9.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
90+
onSettingListener.onSize(2);
91+
}
92+
if (view.getId() == R.id.tv_size_full) {
93+
resetSize();
94+
sizeFull.setTextColor(getResources().getColor(R.color.iplayer_setting_text_color_selected));
95+
onSettingListener.onSize(3);
96+
}
97+
}
98+
99+
OnSettingListener onSettingListener;
100+
101+
public void setOnSettingListener(OnSettingListener onSettingListener) {
102+
this.onSettingListener = onSettingListener;
103+
}
104+
105+
public interface OnSettingListener {
106+
void onRatate(int angle);
107+
108+
void onSize(int size);
109+
}
110+
}
6.67 KB
Loading
Loading
Loading
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:layout_width="match_parent"
4+
android:layout_height="match_parent"
5+
android:background="#70000000"
6+
android:gravity="center"
7+
android:orientation="vertical">
8+
9+
<LinearLayout
10+
android:layout_width="match_parent"
11+
android:layout_height="wrap_content"
12+
android:gravity="center"
13+
android:orientation="horizontal">
14+
15+
<ImageView
16+
android:layout_width="30dp"
17+
android:layout_height="30dp"
18+
android:background="@drawable/iplayer_setting_rotate" />
19+
20+
<TextView
21+
android:id="@+id/tv_rotate_90"
22+
style="@style/iplayer_setting_text"
23+
android:text="@string/rotate_90" />
24+
25+
<TextView
26+
android:id="@+id/tv_rotate_180"
27+
style="@style/iplayer_setting_text"
28+
android:text="@string/rotate_180" />
29+
30+
<TextView
31+
android:id="@+id/tv_rotate_270"
32+
style="@style/iplayer_setting_text"
33+
android:text="@string/rotate_270" />
34+
</LinearLayout>
35+
36+
<LinearLayout
37+
android:layout_width="match_parent"
38+
android:layout_height="wrap_content"
39+
android:layout_marginTop="20dp"
40+
android:gravity="center"
41+
android:orientation="horizontal"
42+
android:visibility="gone">
43+
44+
<ImageView
45+
android:layout_width="30dp"
46+
android:layout_height="30dp"
47+
android:background="@drawable/iplayer_setting_size" />
48+
49+
<TextView
50+
android:id="@+id/tv_size_4_3"
51+
style="@style/iplayer_setting_text"
52+
android:text="@string/size_4_3" />
53+
54+
<TextView
55+
android:id="@+id/tv_size_16_9"
56+
style="@style/iplayer_setting_text"
57+
android:text="@string/size_16_9" />
58+
59+
<TextView
60+
android:id="@+id/tv_size_full"
61+
style="@style/iplayer_setting_text"
62+
android:text="@string/size_full" />
63+
</LinearLayout>
64+
</LinearLayout>

iplayer/src/main/res/layout/iplayer_layout_standard.xml

+15-1
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,15 @@
135135
android:ellipsize="end"
136136
android:maxLines="1"
137137
android:textColor="#ffffff"
138-
android:textSize="18sp"/>
138+
android:textSize="18sp" />
139+
140+
<ImageView
141+
android:id="@+id/iv_setting"
142+
android:layout_width="18dp"
143+
android:layout_height="18dp"
144+
android:layout_gravity="center_vertical"
145+
android:layout_marginRight="12dp"
146+
android:background="@drawable/iplayer_setting" />
139147

140148
<LinearLayout
141149
android:id="@+id/battery_time_layout"
@@ -232,4 +240,10 @@
232240
android:textColor="@android:color/white"
233241
android:textSize="14sp" />
234242
</LinearLayout>
243+
244+
<com.hacknife.iplayer.SettingView
245+
android:id="@+id/setting"
246+
android:layout_width="match_parent"
247+
android:layout_height="match_parent"
248+
android:visibility="gone" />
235249
</RelativeLayout>
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
<color name="iplayer_setting_text_color">#fff</color>
4+
<color name="iplayer_setting_text_color_selected">#fff85959</color>
5+
</resources>
+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
<resources>
22
<dimen name="iplayer_start_button_w_h_normal">45dp</dimen>
33
<dimen name="iplayer_start_button_w_h_fullscreen">62dp</dimen>
4+
<dimen name="iplayer_setting_text_size">20sp</dimen>
5+
46
</resources>

iplayer/src/main/res/values/strings.xml

+6
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,10 @@
77
<string name="replay">Replay</string>
88
<string name="click_to_restart">Click to try again</string>
99
<string name="video_loading_faild">Video loading failed</string>
10+
<string name="rotate_90">90°</string>
11+
<string name="rotate_180">180°</string>
12+
<string name="rotate_270">270°</string>
13+
<string name="size_4_3" >4:3</string>
14+
<string name="size_16_9" >16:9</string>
15+
<string name="size_full" >全屏</string>
1016
</resources>

iplayer/src/main/res/values/styles.xml

+10
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,14 @@
1313
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
1414
</style>
1515

16+
<style name="iplayer_setting_text">
17+
<item name="android:textSize">@dimen/iplayer_setting_text_size</item>
18+
<item name="android:textColor">@color/iplayer_setting_text_color</item>
19+
<item name="android:layout_width">wrap_content</item>
20+
<item name="android:layout_height">wrap_content</item>
21+
<item name="android:layout_marginLeft">30dp</item>
22+
23+
24+
</style>
25+
1626
</resources>

0 commit comments

Comments
 (0)