Initial commit
This commit is contained in:
565
sources/com/ubt/jimu/controller/component/ActionView.java
Normal file
565
sources/com/ubt/jimu/controller/component/ActionView.java
Normal file
@@ -0,0 +1,565 @@
|
||||
package com.ubt.jimu.controller.component;
|
||||
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.PointF;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import com.ubt.jimu.R;
|
||||
import com.ubt.jimu.controller.data.widget.ActionWidgetData;
|
||||
import com.ubt.jimu.controller.util.SvgUtils;
|
||||
import com.ubt.jimu.controller.view.control.ControlTouchEvent;
|
||||
import com.ubt.jimu.controller.view.control.OnControllerClickListener;
|
||||
import com.ubt.jimu.controller.view.control.SuperControlView;
|
||||
import com.ubt.jimu.utils.LocaleUtils;
|
||||
import com.ubt.jimu.utils.LogUtils;
|
||||
import com.ubt.jimu.utils.SystemUtils;
|
||||
import com.ubtrobot.log.ALog;
|
||||
|
||||
/* loaded from: classes.dex */
|
||||
public class ActionView extends SuperControlView<ActionWidgetData> {
|
||||
private Context B;
|
||||
private float C;
|
||||
private float D;
|
||||
private Paint E;
|
||||
private Paint F;
|
||||
private Paint G;
|
||||
private RectF H;
|
||||
private RectF I;
|
||||
private RectF J;
|
||||
private RectF K;
|
||||
private Bitmap L;
|
||||
private Bitmap M;
|
||||
private String N;
|
||||
private Bitmap O;
|
||||
private Bitmap P;
|
||||
private Bitmap Q;
|
||||
private Bitmap R;
|
||||
private float S;
|
||||
private float T;
|
||||
private float U;
|
||||
private float V;
|
||||
private float W;
|
||||
private float a0;
|
||||
private ValueAnimator b0;
|
||||
private float c0;
|
||||
private float d0;
|
||||
private int e0;
|
||||
private float f0;
|
||||
private float g0;
|
||||
private long h0;
|
||||
private long i0;
|
||||
|
||||
public ActionView(Context context, int i, float f, float f2) {
|
||||
super(context);
|
||||
this.a0 = -360.0f;
|
||||
this.B = context;
|
||||
this.C = f;
|
||||
this.D = f2;
|
||||
this.e0 = i;
|
||||
j();
|
||||
i();
|
||||
}
|
||||
|
||||
private void b(float f, float f2) {
|
||||
this.H.offsetTo(f, f2);
|
||||
this.j.offsetTo(f, f2);
|
||||
float centerX = this.H.centerX();
|
||||
float centerY = this.H.centerY();
|
||||
RectF rectF = this.I;
|
||||
float f3 = this.f0;
|
||||
rectF.offsetTo(centerX - (f3 / 2.0f), centerY - (f3 / 2.0f));
|
||||
this.K.offsetTo(centerX - this.V, centerY - this.W);
|
||||
}
|
||||
|
||||
private void g() {
|
||||
OnControllerClickListener onControllerClickListener = getOnControllerClickListener();
|
||||
if (onControllerClickListener == null || b()) {
|
||||
return;
|
||||
}
|
||||
if (this.z == 0) {
|
||||
long j = this.h0;
|
||||
if (j - this.t > 500 || j - this.i0 < 500) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
float centerY = this.H.centerY();
|
||||
float centerX = this.H.centerX();
|
||||
float f = this.c0;
|
||||
float f2 = this.l;
|
||||
if (f < centerX - (f2 / 2.0f) || f > centerX + (f2 / 2.0f)) {
|
||||
return;
|
||||
}
|
||||
float f3 = this.d0;
|
||||
float f4 = this.m;
|
||||
if (f3 < centerY - (f4 / 2.0f) || f3 > centerY + (f4 / 2.0f)) {
|
||||
return;
|
||||
}
|
||||
onControllerClickListener.a(getData(), this);
|
||||
this.i0 = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private void h() {
|
||||
if (this.e0 == 0) {
|
||||
this.e0 = R.drawable.icon_loudly;
|
||||
}
|
||||
SvgUtils a = SvgUtils.a(this.B);
|
||||
int i = this.e0;
|
||||
float f = this.f0;
|
||||
this.L = a.a(i, (int) f, (int) f);
|
||||
}
|
||||
|
||||
private void i() {
|
||||
this.l = this.B.getResources().getDimension(R.dimen.grid_view_width) * 4.0f;
|
||||
this.m = this.l;
|
||||
float f = this.D;
|
||||
float f2 = this.m;
|
||||
float f3 = f + (f2 / 2.0f);
|
||||
int i = this.s;
|
||||
if (f3 >= i) {
|
||||
this.D = i - (f2 / 2.0f);
|
||||
}
|
||||
float f4 = this.C;
|
||||
float f5 = this.m;
|
||||
if (f4 - (f5 / 2.0f) <= 0.0f) {
|
||||
this.C = f5 / 2.0f;
|
||||
} else {
|
||||
float f6 = f4 + (f5 / 2.0f);
|
||||
int i2 = this.r;
|
||||
if (f6 >= i2) {
|
||||
this.C = i2 - (f5 / 2.0f);
|
||||
}
|
||||
}
|
||||
this.U = this.B.getResources().getDimension(R.dimen.control_action_width);
|
||||
this.f0 = this.B.getResources().getDimension(R.dimen.control_action_width);
|
||||
this.g0 = this.B.getResources().getDimension(R.dimen.control_action_text_width);
|
||||
h();
|
||||
this.O = BitmapFactory.decodeResource(this.B.getResources(), R.mipmap.btn_shadow);
|
||||
this.R = BitmapFactory.decodeResource(this.B.getResources(), R.mipmap.text_background_normal);
|
||||
this.Q = BitmapFactory.decodeResource(this.B.getResources(), R.mipmap.text_background_pressed);
|
||||
this.P = this.R;
|
||||
this.E = new Paint();
|
||||
this.E.setFlags(3);
|
||||
this.F = new Paint();
|
||||
this.G = new Paint();
|
||||
this.F.setAntiAlias(true);
|
||||
this.F.setColor(this.B.getResources().getColor(R.color.bg_C9EBFE));
|
||||
this.G.setColor(this.B.getResources().getColor(R.color.bg_FFFFFF));
|
||||
float f7 = this.C;
|
||||
float f8 = this.l;
|
||||
float f9 = this.D;
|
||||
float f10 = this.m;
|
||||
this.j = new RectF(f7 - (f8 / 2.0f), f9 - (f10 / 2.0f), f7 + (f8 / 2.0f), f9 + (f10 / 2.0f));
|
||||
float f11 = this.C;
|
||||
float f12 = this.l;
|
||||
float f13 = this.D;
|
||||
float f14 = this.m;
|
||||
this.H = new RectF(f11 - (f12 / 2.0f), f13 - (f14 / 2.0f), f11 + (f12 / 2.0f), f13 + (f14 / 2.0f));
|
||||
this.V = this.B.getResources().getDimension(R.dimen.control_action_text_x_offset);
|
||||
this.W = this.B.getResources().getDimension(R.dimen.control_action_text_y_offset);
|
||||
float[] viewCenterXY = getViewCenterXY();
|
||||
this.K = new RectF(viewCenterXY[0] - this.V, viewCenterXY[1] - this.W, this.C + (this.l / 2.0f), this.D + (this.m / 2.0f));
|
||||
this.J = new RectF();
|
||||
float f15 = this.C;
|
||||
float f16 = this.f0;
|
||||
float f17 = this.D;
|
||||
this.I = new RectF(f15 - (f16 / 2.0f), f17 - (f16 / 2.0f), f15 + (f16 / 2.0f), f17 + (f16 / 2.0f));
|
||||
}
|
||||
|
||||
private void j() {
|
||||
}
|
||||
|
||||
public void a(int i) {
|
||||
this.e0 = i;
|
||||
h();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public void f() {
|
||||
ALog.a("Test").d("Text:" + this.N);
|
||||
this.N = null;
|
||||
this.M = null;
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return this.N;
|
||||
}
|
||||
|
||||
@Override // com.ubt.jimu.controller.view.control.SuperControlView
|
||||
public float[] getViewCenterXY() {
|
||||
return new float[]{this.H.centerX(), this.H.centerY()};
|
||||
}
|
||||
|
||||
@Override // com.ubt.jimu.controller.view.control.SuperControlView, android.view.View
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
if (b()) {
|
||||
canvas.drawBitmap(this.O, (Rect) null, this.H, this.E);
|
||||
canvas.drawBitmap(this.L, (Rect) null, this.I, this.E);
|
||||
return;
|
||||
}
|
||||
if (getState() == 0) {
|
||||
a();
|
||||
canvas.drawBitmap(this.O, (Rect) null, this.H, this.E);
|
||||
canvas.drawArc(this.J, 270.0f, this.a0, true, this.F);
|
||||
a(canvas);
|
||||
canvas.drawBitmap(this.L, (Rect) null, this.I, this.E);
|
||||
return;
|
||||
}
|
||||
if (c()) {
|
||||
e();
|
||||
}
|
||||
canvas.drawBitmap(this.O, (Rect) null, this.H, this.E);
|
||||
a(canvas);
|
||||
canvas.drawBitmap(this.L, (Rect) null, this.I, this.E);
|
||||
}
|
||||
|
||||
@Override // android.view.View
|
||||
public boolean onTouchEvent(MotionEvent motionEvent) {
|
||||
int actionMasked = motionEvent.getActionMasked();
|
||||
if (actionMasked == 0) {
|
||||
this.t = System.currentTimeMillis();
|
||||
this.c0 = motionEvent.getX();
|
||||
this.d0 = motionEvent.getY();
|
||||
d();
|
||||
float centerX = this.H.centerX();
|
||||
float centerY = this.H.centerY();
|
||||
float f = this.c0;
|
||||
float f2 = this.l;
|
||||
if (f >= centerX - (f2 / 2.0f) && f <= (f2 / 2.0f) + centerX) {
|
||||
float f3 = this.d0;
|
||||
float f4 = this.m;
|
||||
if (f3 >= centerY - (f4 / 2.0f) && f3 <= (f4 / 2.0f) + centerY) {
|
||||
this.f = false;
|
||||
setPressed(true);
|
||||
if (b()) {
|
||||
float centerX2 = this.j.centerX();
|
||||
float centerY2 = this.j.centerY();
|
||||
this.S = centerX2 - this.c0;
|
||||
this.T = centerY2 - this.d0;
|
||||
bringToFront();
|
||||
ControlTouchEvent controlTouchEvent = this.i;
|
||||
if (controlTouchEvent != null) {
|
||||
controlTouchEvent.a((View) this);
|
||||
}
|
||||
} else if (getState() == 0) {
|
||||
ValueAnimator valueAnimator = this.b0;
|
||||
if (valueAnimator != null) {
|
||||
valueAnimator.cancel();
|
||||
}
|
||||
this.a0 = -360.0f;
|
||||
RectF rectF = this.J;
|
||||
float f5 = this.U;
|
||||
rectF.set(centerX - (f5 / 2.0f), centerY - (f5 / 2.0f), centerX + (f5 / 2.0f), centerY + (f5 / 2.0f));
|
||||
this.P = this.Q;
|
||||
this.H.set(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
ControlTouchEvent controlTouchEvent2 = this.i;
|
||||
if (controlTouchEvent2 != null) {
|
||||
controlTouchEvent2.a((SuperControlView) this);
|
||||
this.i.a(getData());
|
||||
}
|
||||
invalidate();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(motionEvent);
|
||||
}
|
||||
if (actionMasked == 1) {
|
||||
setPressed(false);
|
||||
if (!this.f) {
|
||||
LogUtils.c("MotionEvent: 抬起");
|
||||
this.f = true;
|
||||
a(SuperControlView.MotionEventState.STATE_UP);
|
||||
}
|
||||
invalidate();
|
||||
return true;
|
||||
}
|
||||
if (actionMasked != 2) {
|
||||
if (actionMasked != 3) {
|
||||
return super.onTouchEvent(motionEvent);
|
||||
}
|
||||
if (!this.f) {
|
||||
LogUtils.c("MotionEvent:取消");
|
||||
this.f = true;
|
||||
a(SuperControlView.MotionEventState.STATE_CANCEL);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (b()) {
|
||||
float x = motionEvent.getX();
|
||||
float y = motionEvent.getY();
|
||||
b(super.a(motionEvent, this.S), super.b(motionEvent, this.T));
|
||||
boolean a = a(this.j);
|
||||
if (this.i != null) {
|
||||
if (Math.abs(this.c0 - x) <= 20.0f && Math.abs(this.d0 - y) <= 20.0f) {
|
||||
return true;
|
||||
}
|
||||
this.i.b((View) this);
|
||||
if (a) {
|
||||
if (this.e != null && getData() != null) {
|
||||
this.e.setOverlapState(true);
|
||||
this.e.a(String.format(getResources().getString(R.string.control_remove_widget), getData().getWidgetInfo(this.B)));
|
||||
}
|
||||
b(false);
|
||||
this.b.setColor(this.B.getResources().getColor(R.color.color_FF4979));
|
||||
if (!this.n) {
|
||||
SystemUtils.b(this.B);
|
||||
this.n = true;
|
||||
}
|
||||
} else {
|
||||
if (this.e != null && getData() != null) {
|
||||
this.e.setOverlapState(false);
|
||||
this.e.a(String.format(getResources().getString(R.string.control_remove_widget_here), getData().getShowName(LocaleUtils.b())));
|
||||
}
|
||||
RectF rectF2 = this.H;
|
||||
PointF a2 = a(rectF2.left, rectF2.top);
|
||||
this.k.offsetTo(a2.x, a2.y);
|
||||
if (this.i.c((SuperControlView) this)) {
|
||||
b(false);
|
||||
this.b.setColor(this.B.getResources().getColor(R.color.bg_99B8BEC1));
|
||||
} else {
|
||||
b(true);
|
||||
this.b.setColor(this.B.getResources().getColor(this.a));
|
||||
}
|
||||
this.n = false;
|
||||
}
|
||||
}
|
||||
invalidate();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */
|
||||
public Bitmap a(String str) {
|
||||
char c;
|
||||
switch (str.hashCode()) {
|
||||
case -1721778389:
|
||||
if (str.equals("DPAD_UP")) {
|
||||
c = '\b';
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case -1067127502:
|
||||
if (str.equals("DPAD_DOWN")) {
|
||||
c = '\t';
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case -1066899305:
|
||||
if (str.equals("DPAD_LEFT")) {
|
||||
c = '\n';
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 65:
|
||||
if (str.equals("A")) {
|
||||
c = 0;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 66:
|
||||
if (str.equals("B")) {
|
||||
c = 1;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 88:
|
||||
if (str.equals("X")) {
|
||||
c = 2;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 89:
|
||||
if (str.equals("Y")) {
|
||||
c = 3;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 2405:
|
||||
if (str.equals("L1")) {
|
||||
c = 4;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 2406:
|
||||
if (str.equals("L2")) {
|
||||
c = 5;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 2591:
|
||||
if (str.equals("R1")) {
|
||||
c = 6;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 2592:
|
||||
if (str.equals("R2")) {
|
||||
c = 7;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
case 1291520876:
|
||||
if (str.equals("DPAD_RIGHT")) {
|
||||
c = 11;
|
||||
break;
|
||||
}
|
||||
c = 65535;
|
||||
break;
|
||||
default:
|
||||
c = 65535;
|
||||
break;
|
||||
}
|
||||
int i = R.drawable.ic_text_x;
|
||||
switch (c) {
|
||||
case 0:
|
||||
i = R.drawable.ic_text_a;
|
||||
break;
|
||||
case 1:
|
||||
i = R.drawable.ic_text_b;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
i = R.drawable.ic_text_y;
|
||||
break;
|
||||
case 4:
|
||||
i = R.drawable.ic_text_l1;
|
||||
break;
|
||||
case 5:
|
||||
i = R.drawable.ic_text_l2;
|
||||
break;
|
||||
case 6:
|
||||
i = R.drawable.ic_text_r1;
|
||||
break;
|
||||
case 7:
|
||||
i = R.drawable.ic_text_r2;
|
||||
break;
|
||||
case '\b':
|
||||
i = R.drawable.ic_text_direction_up;
|
||||
break;
|
||||
case '\t':
|
||||
i = R.drawable.ic_text_direction_down;
|
||||
break;
|
||||
case '\n':
|
||||
i = R.drawable.ic_text_direction_left;
|
||||
break;
|
||||
case 11:
|
||||
i = R.drawable.ic_text_direction_right;
|
||||
break;
|
||||
default:
|
||||
Log.e("ActionView", "Invalid text, use defaut text X");
|
||||
break;
|
||||
}
|
||||
if (i == 0) {
|
||||
return null;
|
||||
}
|
||||
SvgUtils a = SvgUtils.a(this.B);
|
||||
float f = this.g0;
|
||||
return a.a(i, (int) f, (int) f);
|
||||
}
|
||||
|
||||
private void a(Canvas canvas) {
|
||||
if (this.M != null) {
|
||||
canvas.drawBitmap(this.P, (Rect) null, this.K, this.E);
|
||||
canvas.drawBitmap(this.M, (Rect) null, new RectF(this.K.centerX() - (this.g0 / 2.0f), this.K.centerY() - (this.g0 / 2.0f), this.K.centerX() + (this.g0 / 2.0f), this.K.centerY() + (this.g0 / 2.0f)), this.E);
|
||||
}
|
||||
}
|
||||
|
||||
public void b(String str) {
|
||||
ALog.a("Test").d("Text:" + str);
|
||||
this.N = str;
|
||||
if (TextUtils.isEmpty(str)) {
|
||||
f();
|
||||
}
|
||||
this.M = a(str);
|
||||
invalidate();
|
||||
}
|
||||
|
||||
private void a(SuperControlView.MotionEventState motionEventState) {
|
||||
ActionWidgetData data;
|
||||
this.h0 = System.currentTimeMillis();
|
||||
if (b()) {
|
||||
this.S = 0.0f;
|
||||
this.T = 0.0f;
|
||||
if (a(this.j)) {
|
||||
if (this.i != null && (data = getData()) != null) {
|
||||
this.i.a(this, data.getActionID());
|
||||
this.i.c((View) this);
|
||||
}
|
||||
invalidate();
|
||||
return;
|
||||
}
|
||||
if (this.i != null) {
|
||||
RectF rectF = this.H;
|
||||
PointF a = a(rectF.left, rectF.top);
|
||||
this.k.offsetTo(a.x, a.y);
|
||||
if (this.i.c((SuperControlView) this)) {
|
||||
b(this.o, this.p);
|
||||
this.b.setColor(this.B.getResources().getColor(this.a));
|
||||
} else {
|
||||
b(a.x, a.y);
|
||||
this.i.a(this, this.j.centerX(), this.j.centerY());
|
||||
}
|
||||
this.i.c((View) this);
|
||||
if (System.currentTimeMillis() - this.t < 300) {
|
||||
this.i.a(this, getData());
|
||||
}
|
||||
}
|
||||
b(false);
|
||||
return;
|
||||
}
|
||||
float centerX = this.I.centerX();
|
||||
float centerY = this.I.centerY();
|
||||
RectF rectF2 = this.H;
|
||||
float f = this.l;
|
||||
float f2 = this.m;
|
||||
rectF2.set(centerX - (f / 2.0f), centerY - (f2 / 2.0f), centerX + (f / 2.0f), centerY + (f2 / 2.0f));
|
||||
this.J.set(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
this.P = this.R;
|
||||
int i = this.z;
|
||||
if (i != 0) {
|
||||
if (i != 2) {
|
||||
return;
|
||||
}
|
||||
setSelect(true);
|
||||
g();
|
||||
return;
|
||||
}
|
||||
g();
|
||||
ControlTouchEvent controlTouchEvent = this.i;
|
||||
if (controlTouchEvent != null) {
|
||||
controlTouchEvent.b((SuperControlView) this);
|
||||
this.i.a(getData(), motionEventState);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean a(RectF rectF) {
|
||||
RectF deleteViewRectF = getDeleteViewRectF();
|
||||
if (deleteViewRectF == null) {
|
||||
return false;
|
||||
}
|
||||
return RectF.intersects(deleteViewRectF, rectF);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user