新接入FaceUnity美颜SDK

This commit is contained in:
2022-09-17 16:54:58 +08:00
parent c6770c1d51
commit 333e4fc1e6
396 changed files with 58390 additions and 47 deletions

View File

@@ -0,0 +1,140 @@
package com.yunbao.faceunity.ui;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.checkbox.CheckGroup;
import com.yunbao.faceunity.control.BodyBeautyControlView;
import com.yunbao.faceunity.control.FaceBeautyControlView;
import com.yunbao.faceunity.control.MakeupControlView;
import com.yunbao.faceunity.control.PropControlView;
import com.yunbao.faceunity.data.FaceUnityDataFactory;
/**
* DESC
* Created on 2021/4/26
*/
public class FaceUnityView extends LinearLayout {
private Context mContext;
public FaceUnityView(Context context) {
super(context);
mContext = context;
init();
}
public FaceUnityView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mContext = context;
init();
}
public FaceUnityView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
init();
}
private FaceUnityDataFactory mDataFactory;
private CheckGroup mCheckGroupView;//底部菜单
private FaceBeautyControlView mFaceBeautyControlView;//美颜菜单
private MakeupControlView mMakeupControlView;//美妆菜单
private PropControlView mPropControlView;//道具菜单
private BodyBeautyControlView mBodyBeautyControlView;//美体菜单
private View lineView;//分割线
private void init() {
LayoutInflater.from(mContext).inflate(R.layout.layout_faceunity, this);
initView();
bindBottomView();
}
/**
* 绑定数据工厂
*
* @param dataFactory FaceUnityDataFactory
*/
public void bindDataFactory(FaceUnityDataFactory dataFactory) {
mDataFactory = dataFactory;
mFaceBeautyControlView.bindDataFactory(dataFactory.mFaceBeautyDataFactory);
mMakeupControlView.bindDataFactory(dataFactory.mMakeupDataFactory);
mPropControlView.bindDataFactory(dataFactory.mPropDataFactory);
mBodyBeautyControlView.bindDataFactory(dataFactory.mBodyBeautyDataFactory);
switch (dataFactory.currentFunctionIndex) {
case 0:
mCheckGroupView.check(R.id.radio_beauty);
break;
case 1:
mCheckGroupView.check(R.id.radio_sticker);
break;
case 2:
mCheckGroupView.check(R.id.radio_makeup);
break;
case 3:
mCheckGroupView.check(R.id.radio_body);
break;
}
}
/**
* 初始化View
*/
private void initView() {
mCheckGroupView = findViewById(R.id.group_function);
mFaceBeautyControlView = findViewById(R.id.control_beauty);
mMakeupControlView = findViewById(R.id.control_makeup);
mPropControlView = findViewById(R.id.control_prop);
mBodyBeautyControlView = findViewById(R.id.control_body);
lineView = findViewById(R.id.line);
}
/**
* 底部功能菜单切换
*/
private void bindBottomView() {
mCheckGroupView.setOnCheckedChangeListener((group, checkedId) -> {
if (checkedId == R.id.radio_beauty) {
showFunction(0);
mDataFactory.onFunctionSelected(0);
} else if (checkedId == R.id.radio_sticker) {
showFunction(1);
mDataFactory.onFunctionSelected(1);
} else if (checkedId == R.id.radio_makeup) {
showFunction(2);
mDataFactory.onFunctionSelected(2);
} else if (checkedId == R.id.radio_body) {
showFunction(3);
mDataFactory.onFunctionSelected(3);
} else {
showFunction(-1);
}
});
}
/**
* UI菜单显示控制
*
* @param index Int
*/
private void showFunction(int index) {
mFaceBeautyControlView.setVisibility((index == 0) ? View.VISIBLE : View.GONE);
mPropControlView.setVisibility((index == 1) ? View.VISIBLE : View.GONE);
mMakeupControlView.setVisibility((index == 2) ? View.VISIBLE : View.GONE);
mBodyBeautyControlView.setVisibility((index == 3) ? View.VISIBLE : View.GONE);
lineView.setVisibility((index != -1) ? View.VISIBLE : View.GONE);
}
}