diff --git a/OCH/mogo-och-bus/build.gradle b/OCH/mogo-och-bus/build.gradle
index 4ecb9d3759..bb6f3e84a1 100644
--- a/OCH/mogo-och-bus/build.gradle
+++ b/OCH/mogo-och-bus/build.gradle
@@ -69,9 +69,6 @@ dependencies {
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-function-call')
}
-
- // 网约车其他引用
- implementation 'com.belerweb:pinyin4j:2.5.1'
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
\ No newline at end of file
diff --git a/OCH/mogo-och-bus/libs/pinyin4j-2.5.1.jar b/OCH/mogo-och-bus/libs/pinyin4j-2.5.1.jar
new file mode 100644
index 0000000000..8446c53fce
Binary files /dev/null and b/OCH/mogo-och-bus/libs/pinyin4j-2.5.1.jar differ
diff --git a/OCH/mogo-och-taxi/build.gradle b/OCH/mogo-och-taxi/build.gradle
index fd4fa4d794..6fb54ece1f 100644
--- a/OCH/mogo-och-taxi/build.gradle
+++ b/OCH/mogo-och-taxi/build.gradle
@@ -55,7 +55,6 @@ dependencies {
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.androidxconstraintlayout
- implementation 'com.github.amikoj:ShadowView:1.0.1'
implementation rootProject.ext.dependencies.amapnavi3dmap
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogoutils
@@ -72,9 +71,6 @@ dependencies {
implementation project(':core:mogo-core-function-call')
api project(':core:function-impl:mogo-core-function-smp')
}
-
- // 网约车其他引用
- implementation 'com.belerweb:pinyin4j:2.5.1'
}
apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/libs/pinyin4j-2.5.1.jar b/OCH/mogo-och-taxi/libs/pinyin4j-2.5.1.jar
new file mode 100644
index 0000000000..8446c53fce
Binary files /dev/null and b/OCH/mogo-och-taxi/libs/pinyin4j-2.5.1.jar differ
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/Shadow.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/Shadow.kt
new file mode 100644
index 0000000000..59c9d02eba
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/Shadow.kt
@@ -0,0 +1,65 @@
+package com.mogo.och.taxi.callback
+
+import androidx.annotation.ColorRes
+
+/**
+ * @author: wangmingjun
+ * @date: 2022/1/21
+ */
+interface Shadow {
+ //设置阴影半径
+ fun setShadowRadius(radius:Float):Shadow
+
+ //添加单位设置
+ fun setShadowRadius(unit:Int,radius: Float):Shadow
+
+ //设置应用颜色
+ fun setShadowColor(color:Int):Shadow
+
+ //设置阴影颜色资源文件id
+ fun setShadowColorRes(@ColorRes color: Int):Shadow
+ /**
+ * 设置模糊半径
+ * @param radius
+ */
+ fun setBlurRadius(radius:Float):Shadow
+
+ /**
+ *
+ * @param unit @{@link android.util.TypedValue#TYPE_DIMENSION}
+ * @param radius 模糊半径
+ */
+ fun setBlurRadius(unit:Int,radius:Float):Shadow
+
+ /**
+ * 设置水平方向的偏移量
+ * @param offset x轴偏移
+ */
+ fun setXOffset(offset:Float):Shadow
+
+
+ /**
+ * 设置x方向的偏移量,设置单位
+ * @param unit @{@link android.util.TypedValue#TYPE_DIMENSION}
+ * @param offset x轴偏移
+ */
+ fun setXOffset(unit:Int,offset:Float):Shadow
+
+ /**
+ * 设置竖直方向的偏移量
+ * @param offset y轴偏移
+ */
+ fun setYOffset(offset:Float):Shadow
+
+ /**
+ * 设置竖直方向的偏移量,带单位
+ * @param unit @{@link android.util.TypedValue#TYPE_DIMENSION}
+ * @param offset y轴偏移
+ */
+ fun setYOffset(unit:Int,offset:Float):Shadow
+
+ /**
+ * 更新绘制
+ */
+ fun commit();
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BorderShadowLayout.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BorderShadowLayout.java
new file mode 100644
index 0000000000..dd3c49b15a
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BorderShadowLayout.java
@@ -0,0 +1,360 @@
+package com.mogo.och.taxi.ui;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.graphics.BlurMaskFilter;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.widget.LinearLayout;
+
+import com.mogo.och.taxi.R;
+import com.mogo.och.taxi.callback.Shadow;
+import com.mogo.och.taxi.utils.DimenUtil;
+
+/**
+ * @author: wangmingjun
+ * @date: 2022/1/21
+ * 边框阴影
+ */
+public class BorderShadowLayout extends LinearLayout {
+
+
+ private static final String TAG = "ShadowLayout";
+
+ //默认阴影半径
+ public static final float SHADOW_DEFAULT_RADIUS = DimenUtil.INSTANCE.dp2px(5);
+
+ //阴影最大偏移量
+ public static final float SHADOW_MAX_OFFSET = DimenUtil.INSTANCE.dp2px(20);
+
+ //阴影最大模糊半径
+ public static final float SHADOW_MAX_BLUR = DimenUtil.INSTANCE.dp2px(20);
+
+
+
+ //默认模糊半径
+ public static final float SHADOW_DEFAULT_BLUR_RADIUS = DimenUtil.INSTANCE.dp2px(5);
+
+
+ //阴影颜色
+ private int shadowColor = Color.parseColor("#333333");
+
+ //阴影类型,0:默认为单边 1:单边 2:邻边 3:四边所有
+ private int shadowType;
+
+ //阴影半径
+ private float shadowRadius = 0f;
+
+ //模糊度半径
+ private float blurRadius = SHADOW_DEFAULT_BLUR_RADIUS ;
+
+ //水平位移
+ private float xOffset = DimenUtil.INSTANCE.dp2px(10);
+
+
+ //竖直方向位移
+ private float yOffset = DimenUtil.INSTANCE.dp2px(10);
+
+ //背景色
+ private int bgColor = Color.WHITE;
+
+ //是否有点击效果
+ private boolean hasEffect = false ;
+
+
+ int left =0 ,right =0,top = 0,bottom = 0 ;
+
+ //代理方式
+ private Shadow shadow = new BorderShadowLayout.ShadowConfig(this);
+
+ private float mWidthMode;
+ private float mHeightMode;
+ private Paint mPaint = new Paint();
+ private Paint locationPaint = new Paint();
+
+ public BorderShadowLayout(Context context) {
+ super(context,null);
+ }
+
+ public BorderShadowLayout(Context context, AttributeSet attrs) {
+ this(context, attrs,0);
+ }
+
+ public BorderShadowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ this.setLayerType(LAYER_TYPE_SOFTWARE, null);//取消硬件加速
+ TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ShadowLayout);
+ shadowColor = typedArray.getColor(R.styleable.ShadowLayout_shadowColor, Color.BLUE);
+ blurRadius = typedArray.getDimension(R.styleable.ShadowLayout_blurRadius, SHADOW_DEFAULT_BLUR_RADIUS);
+ shadowRadius = typedArray.getDimension(R.styleable.ShadowLayout_shadowRadius,0);
+ hasEffect = typedArray.getBoolean(R.styleable.ShadowLayout_hasEffect, false);
+ xOffset = typedArray.getDimension(R.styleable.ShadowLayout_xOffset,DimenUtil.INSTANCE.dp2px(10));
+ yOffset = typedArray.getDimension(R.styleable.ShadowLayout_yOffset,DimenUtil.INSTANCE.dp2px(10));
+ bgColor = typedArray.getColor(R.styleable.ShadowLayout_bgColor,Color.WHITE);
+ typedArray.recycle();
+
+ if (shadowRadius<0){
+ shadowRadius = -shadowRadius;
+ }
+ if (blurRadius < 0) {
+ blurRadius = -blurRadius;
+ }
+
+ blurRadius = Math.min(SHADOW_MAX_BLUR,blurRadius);
+
+ if (Math.abs(xOffset)> SHADOW_MAX_OFFSET){
+ xOffset = xOffset/Math.abs(xOffset) * SHADOW_MAX_OFFSET;
+ }
+
+ if (Math.abs(yOffset) > SHADOW_MAX_OFFSET){
+ yOffset = yOffset/Math.abs(yOffset) * SHADOW_MAX_OFFSET;
+ }
+
+ init();
+ }
+
+ private void init(){
+ setBackgroundColor(Color.parseColor("#00ffffff"));
+ if (xOffset>0){
+ //水平偏移量为正数,右侧有阴影,阴影长度为blurRadius+|xOffset|
+ right = (int)(blurRadius + Math.abs(xOffset));
+ }else if (xOffset==0){
+ //水平偏移为0,水平间距为blurRadius
+ left = (int)blurRadius;
+ right = (int)blurRadius;
+ }else {
+ //水平偏移为负数,左侧有阴影,阴影长度为blurRadius+|xOffset|
+ left = (int)(blurRadius + Math.abs(xOffset));
+ }
+ if (yOffset>0){
+ //竖直偏移量为正数,底部有阴影,阴影长度为blurRadius+|yOffset|
+ bottom = (int)(blurRadius + Math.abs(yOffset));
+ }else if (yOffset==0){
+ //竖直偏移量为0,竖直间距为blurRadius
+ top = (int)blurRadius;
+ bottom = (int)blurRadius;
+ }else {
+ //竖直偏移量为负数,顶部有阴影,阴影长度为blurRadius+|yOffset|
+ top = (int)(blurRadius + Math.abs(yOffset));
+ }
+ setPadding(left,top,right,bottom);
+ }
+
+
+
+
+
+ /**
+ * 获取阴影设置
+ * @return 返回阴影设置配置
+ */
+ public Shadow getShadowConfig(){
+ return shadow;
+ }
+
+
+ @Override
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
+ super.onLayout(changed,l,t,r,b);
+ }
+
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
+ }
+
+
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ drawBackground(canvas);//放在super前是后景,相反是前景,前景会覆盖子布局
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+
+
+
+
+ //绘制背景色(在子view底部)
+ private void drawBackground(Canvas canvas){
+
+ mWidthMode = getMeasuredWidth();
+ mHeightMode = getMeasuredHeight();
+ float startX = 0;
+ float startY = 0;
+ float endX = 0;
+ float endY = 0;
+
+ if (xOffset==0){
+ startX = right;
+ endX = mWidthMode-blurRadius;
+ }else {
+ startX = right+blurRadius;
+ endX = mWidthMode-left-blurRadius;
+ }
+
+ if (yOffset==0){
+ startY = bottom;
+ endY = mHeightMode-blurRadius;
+ }else {
+ startY = bottom+blurRadius;
+ endY = mHeightMode-top-blurRadius;
+ }
+// mPaint.setShadowLayer(blurRadius,0,0,shadowColor);
+ if (blurRadius>0){
+ mPaint.setMaskFilter(new BlurMaskFilter(blurRadius,BlurMaskFilter.Blur.NORMAL));
+ }
+ mPaint.setColor(shadowColor);
+ mPaint.setAntiAlias(true);
+
+ RectF shadowRect = new RectF(startX,startY,endX,endY);
+
+ RectF locationRectF = new RectF(left,top,mWidthMode-right,mHeightMode-bottom);
+ if (shadowRadius==0){
+ //不是圆角
+ canvas.drawRect(shadowRect,mPaint);
+ }else {
+ //圆角,角度为shadowRadius
+ canvas.drawRoundRect(shadowRect,shadowRadius,shadowRadius,mPaint);
+ }
+
+ locationPaint.setColor(bgColor);
+ locationPaint.setAntiAlias(true);
+
+ if (shadowRadius==0){
+ //不是圆角
+ canvas.drawRect(locationRectF,locationPaint);
+ }else {
+ //圆角,角度为shadowRadius
+ canvas.drawRoundRect(locationRectF,shadowRadius,shadowRadius,locationPaint);
+ }
+ }
+
+
+
+ /**
+ * 阴影配置
+ */
+ class ShadowConfig implements Shadow{
+
+ //代理
+ private BorderShadowLayout shadow;
+
+ private ShadowConfig(BorderShadowLayout shadow) {
+ this.shadow = shadow;
+ }
+
+ @Override
+ public Shadow setShadowRadius(float radius) {
+ return setShadowRadius(TypedValue.COMPLEX_UNIT_DIP,radius);
+ }
+
+ @Override
+ public Shadow setShadowRadius(int unit, float radius) {
+ Context c = getContext();
+ Resources r;
+
+ if (c == null) {
+ r = Resources.getSystem();
+ } else {
+ r = c.getResources();
+ }
+ shadow.shadowRadius = Math.abs(TypedValue.applyDimension(unit,radius,r.getDisplayMetrics()));
+ return this;
+ }
+
+ @Override
+ public Shadow setShadowColor(int color) {
+ shadow.shadowColor = color;
+ return this;
+ }
+
+ @Override
+ public Shadow setShadowColorRes(int colorRes) {
+ shadow.shadowColor = shadow.getResources().getColor(colorRes);
+ return this;
+ }
+
+ @Override
+ public Shadow setBlurRadius(float radius) {
+ return setBlurRadius(TypedValue.COMPLEX_UNIT_DIP,radius);
+ }
+
+ @Override
+ public Shadow setBlurRadius(int unit, float radius) {
+ Context c = getContext();
+ Resources r;
+ if (c == null) {
+ r = Resources.getSystem();
+ } else {
+ r = c.getResources();
+ }
+ shadow.blurRadius = Math.min(SHADOW_MAX_BLUR,Math.abs(TypedValue.applyDimension(unit,radius,r.getDisplayMetrics())));
+ return this;
+ }
+
+ @Override
+ public Shadow setXOffset(float offset) {
+ return setXOffset(TypedValue.COMPLEX_UNIT_DIP,offset);
+ }
+
+ @Override
+ public Shadow setXOffset(int unit, float offset) {
+ Context c = getContext();
+ Resources r;
+ if (c == null) {
+ r = Resources.getSystem();
+ } else {
+ r = c.getResources();
+ }
+
+ float x = TypedValue.applyDimension(unit,offset,r.getDisplayMetrics());
+ if (Math.abs(x)> SHADOW_MAX_OFFSET){
+ x = x/Math.abs(x) * SHADOW_MAX_OFFSET;
+ }
+ shadow.xOffset = x;
+ return this;
+ }
+
+ @Override
+ public Shadow setYOffset(float offset) {
+ return setYOffset(TypedValue.COMPLEX_UNIT_DIP,offset);
+ }
+
+ @Override
+ public Shadow setYOffset(int unit, float offset) {
+ Context c = getContext();
+ Resources r;
+ if (c == null) {
+ r = Resources.getSystem();
+ } else {
+ r = c.getResources();
+ }
+
+ float y = TypedValue.applyDimension(unit,offset,r.getDisplayMetrics());
+ if (Math.abs(y)> SHADOW_MAX_OFFSET){
+ y = y/Math.abs(y) * SHADOW_MAX_OFFSET;
+ }
+ shadow.yOffset = y;
+ return this;
+ }
+
+ @Override
+ public void commit() {
+ shadow.init();
+ shadow.requestLayout();
+ shadow.postInvalidate();
+ }
+ }
+
+
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/DimenUtil.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/DimenUtil.kt
new file mode 100644
index 0000000000..0ef16d740a
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/utils/DimenUtil.kt
@@ -0,0 +1,13 @@
+package com.mogo.och.taxi.utils
+
+import android.content.res.Resources
+
+/**
+ * @author: wangmingjun
+ * @date: 2022/1/21
+ */
+object DimenUtil{
+ fun dp2px(value:Float):Float{
+ return (0.5f + value * Resources.getSystem().displayMetrics.density)
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
index 67293a8c65..e26d186d8b 100644
--- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
+++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
@@ -1,5 +1,5 @@
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/values/attrs.xml b/OCH/mogo-och-taxi/src/main/res/values/attrs.xml
index 3e3dd1286c..1a60978ae5 100644
--- a/OCH/mogo-och-taxi/src/main/res/values/attrs.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values/attrs.xml
@@ -7,4 +7,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file