完成美颜UI 90%

This commit is contained in:
2022-09-20 18:29:05 +08:00
parent c634d29e79
commit d1d31da6be
136 changed files with 5028 additions and 305 deletions

View File

@@ -0,0 +1,124 @@
package com.yunbao.faceunity.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.adapters.vh.AnimViewHolder;
import com.yunbao.faceunity.adapters.vh.AnimojiViewHolder;
import com.yunbao.faceunity.adapters.vh.BaseViewHolder;
import com.yunbao.faceunity.adapters.vh.BeautyBodyViewHolder;
import com.yunbao.faceunity.adapters.vh.BeautyShapeViewHolder;
import com.yunbao.faceunity.adapters.vh.BeautySkinViewHolder;
import com.yunbao.faceunity.adapters.vh.BigHeadViewHolder;
import com.yunbao.faceunity.adapters.vh.FilterViewHolder;
import com.yunbao.faceunity.adapters.vh.FineStickerViewHolder;
import com.yunbao.faceunity.adapters.vh.MakeupViewHolder;
import com.yunbao.faceunity.adapters.vh.StickerViewHolder;
import com.yunbao.faceunity.adapters.vh.StyleViewHolder;
import com.yunbao.faceunity.data.FaceParam;
import com.yunbao.faceunity.entity.BaseBean;
import com.yunbao.faceunity.entity.ModelAttributeData;
import com.yunbao.faceunity.seekbar.DiscreteSeekBar;
import com.yunbao.faceunity.utils.SeekBarUtils;
import java.util.ArrayList;
import java.util.List;
public class ContainerRecyclerAdapter extends RecyclerView.Adapter<BaseViewHolder> {
private Context mContext;
private List<? extends BaseBean> list;
public int selectPosition = -1;
public ContainerRecyclerAdapter(Context mContext) {
this.mContext = mContext;
}
public void setList(ArrayList<? extends BaseBean> list) {
this.list = list;
this.selectPosition = 0;
}
public int getSelectPosition() {
return selectPosition;
}
public void setSelectPosition(int selectPosition) {
this.selectPosition = selectPosition;
notifyDataSetChanged();
}
@NonNull
@Override
public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater from = LayoutInflater.from(mContext);
BaseViewHolder vh;
switch (viewType) {
case FaceParam.FACE_BEAUTY_SKIN:
vh = new BeautySkinViewHolder(from.inflate(R.layout.list_item_face_config, parent, false));
break;
case FaceParam.FACE_BEAUTY_SHAPE:
vh = new BeautyShapeViewHolder(from.inflate(R.layout.list_item_face_config, parent, false));
break;
case FaceParam.FACE_BEAUTY_BODY:
vh = new BeautyBodyViewHolder(from.inflate(R.layout.list_item_face_config, parent, false));
break;
case FaceParam.FACE_BEAUTY_FILTER:
vh = new FilterViewHolder(from.inflate(R.layout.list_item_face_config_filter, parent, false));
break;
case FaceParam.FACE_MAKEUP:
vh = new MakeupViewHolder(from.inflate(R.layout.list_item_face_config_filter, parent, false));
break;
case FaceParam.FACE_BEAUTY_STYLE:
vh = new StyleViewHolder(from.inflate(R.layout.list_item_face_config_style, parent, false));
break;
case FaceParam.FACE_ANIMOJI:
vh = new AnimojiViewHolder(from.inflate(R.layout.list_item_face_config_big_head, parent, false));
break;
case FaceParam.FACE_ANIM:
vh = new AnimViewHolder(from.inflate(R.layout.list_item_face_config_big_head, parent, false));
break;
case FaceParam.FACE_STICKER:
vh = new StickerViewHolder(from.inflate(R.layout.list_item_face_config_big_head, parent, false));
break;
case FaceParam.FACE_BIG_HEAD:
vh = new BigHeadViewHolder(from.inflate(R.layout.list_item_face_config_big_head, parent, false));
break;
case FaceParam.FACE_FINE_STICKER:
case FaceParam.FACE_FINE_STICKER_MIDDLE:
case FaceParam.FACE_FINE_STICKER_HIGH:
case FaceParam.FACE_FINE_STICKER_GAME:
vh = new FineStickerViewHolder(from.inflate(R.layout.list_item_face_config_big_head, parent, false));
break;
default:
vh = new BeautySkinViewHolder(LayoutInflater.from(mContext).inflate(R.layout.list_item_face_config, parent, false));
}
vh.adapter = this;
return vh;
}
@Override
public int getItemViewType(int position) {
return list.get(position).getBeanType();
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
holder.setData(list.get(position));
}
}

View File

@@ -0,0 +1,74 @@
package com.yunbao.faceunity.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.common.adapter.OnItemClickListener;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.MenuGroupBean;
import java.util.List;
public class MenuGroupRecyclerAdapter extends RecyclerView.Adapter<MenuGroupRecyclerAdapter.Vh> {
private Context context;
private List<MenuGroupBean> list;
private OnItemClickListener onItemClickListener;
public MenuGroupRecyclerAdapter(Context context) {
this.context = context;
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public void setList(List<MenuGroupBean> list) {
this.list = list;
}
@NonNull
@Override
public Vh onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new Vh(LayoutInflater.from(context).inflate(R.layout.list_item_menu_group, parent, false));
}
@Override
public void onBindViewHolder(@NonNull Vh holder, int position) {
holder.setData(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
protected class Vh extends RecyclerView.ViewHolder {
ImageView icon;
TextView title;
public Vh(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.item_icon);
title = itemView.findViewById(R.id.item_text);
itemView.setOnClickListener(v -> {
if (onItemClickListener != null) {
onItemClickListener.onItemClick(getAdapterPosition());
}
});
}
public void setData(MenuGroupBean menuGroupBean) {
icon.setImageResource(menuGroupBean.getIconId());
title.setText(menuGroupBean.getTitleId());
}
}
}

View File

@@ -0,0 +1,25 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class AnimViewHolder extends BaseViewHolder{
ImageView imageView;
public AnimViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.iv_control);
imageView.setBackgroundResource(R.drawable.bg_control_square_selector);
itemView.setOnClickListener(v -> setSelectPosition(getAdapterPosition()));
}
@Override
public void setData(BaseBean data) {
imageView.setImageResource(data.getImageRes());
imageView.setSelected(getAdapterPosition()==getSelectPosition());
}
}

View File

@@ -0,0 +1,24 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class AnimojiViewHolder extends BaseViewHolder{
ImageView imageView;
public AnimojiViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.iv_control);
itemView.setOnClickListener(v -> setSelectPosition(getAdapterPosition()));
}
@Override
public void setData(BaseBean data) {
imageView.setImageResource(data.getImageRes());
imageView.setSelected(getAdapterPosition()==getSelectPosition());
}
}

View File

@@ -0,0 +1,33 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.yunbao.faceunity.adapters.ContainerRecyclerAdapter;
import com.yunbao.faceunity.entity.BaseBean;
import java.util.ArrayList;
import java.util.List;
public abstract class BaseViewHolder extends RecyclerView.ViewHolder {
public ContainerRecyclerAdapter adapter;
public int getSelectPosition() {
return adapter.selectPosition;
}
public void setSelectPosition(int selectPosition) {
adapter.selectPosition = selectPosition;
adapter.notifyDataSetChanged();
}
public BaseViewHolder(@NonNull View itemView) {
super(itemView);
}
public abstract void setData(BaseBean data);
}

View File

@@ -0,0 +1,40 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
import com.yunbao.faceunity.entity.ModelAttributeData;
import com.yunbao.faceunity.seekbar.DiscreteSeekBar;
import com.yunbao.faceunity.utils.SeekBarUtils;
public class BeautyBodyViewHolder extends BaseViewHolder{
private ImageView icon;
private TextView title;
private TextView value;
private DiscreteSeekBar seekBar;
public BeautyBodyViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.item_icon);
title = itemView.findViewById(R.id.item_title);
value = itemView.findViewById(R.id.item_value);
seekBar = itemView.findViewById(R.id.item_seekBar);
}
@Override
public void setData(BaseBean data) {
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
ModelAttributeData attributeData = data.getModelAttributeData();
value.setText(attributeData.getDefault() + "");
SeekBarUtils.Companion.seekToSeekBar(seekBar,
attributeData.getDefault(),
attributeData.getStand(),
attributeData.getMaxRange());
}
}

View File

@@ -0,0 +1,40 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
import com.yunbao.faceunity.entity.ModelAttributeData;
import com.yunbao.faceunity.seekbar.DiscreteSeekBar;
import com.yunbao.faceunity.utils.SeekBarUtils;
public class BeautyShapeViewHolder extends BaseViewHolder{
private ImageView icon;
private TextView title;
private TextView value;
private DiscreteSeekBar seekBar;
public BeautyShapeViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.item_icon);
title = itemView.findViewById(R.id.item_title);
value = itemView.findViewById(R.id.item_value);
seekBar = itemView.findViewById(R.id.item_seekBar);
}
@Override
public void setData(BaseBean data) {
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
ModelAttributeData attributeData = data.getModelAttributeData();
value.setText(attributeData.getDefault() + "");
SeekBarUtils.Companion.seekToSeekBar(seekBar,
attributeData.getDefault(),
attributeData.getStand(),
attributeData.getMaxRange());
}
}

View File

@@ -0,0 +1,40 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
import com.yunbao.faceunity.entity.ModelAttributeData;
import com.yunbao.faceunity.seekbar.DiscreteSeekBar;
import com.yunbao.faceunity.utils.SeekBarUtils;
public class BeautySkinViewHolder extends BaseViewHolder{
private ImageView icon;
private TextView title;
private TextView value;
private DiscreteSeekBar seekBar;
public BeautySkinViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.item_icon);
title = itemView.findViewById(R.id.item_title);
value = itemView.findViewById(R.id.item_value);
seekBar = itemView.findViewById(R.id.item_seekBar);
}
@Override
public void setData(BaseBean data) {
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
ModelAttributeData attributeData = data.getModelAttributeData();
value.setText(attributeData.getDefault() + "");
SeekBarUtils.Companion.seekToSeekBar(seekBar,
attributeData.getDefault(),
attributeData.getStand(),
attributeData.getMaxRange());
}
}

View File

@@ -0,0 +1,29 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class BigHeadViewHolder extends BaseViewHolder{
ImageView imageView;
public BigHeadViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.iv_control);
itemView.setOnClickListener(v -> setSelectPosition(getAdapterPosition()));
}
@Override
public void setData(BaseBean data) {
imageView.setImageResource(data.getImageRes());
if(getAdapterPosition()==0){
imageView.setBackgroundResource(R.drawable.bg_control_oval2_selector);
}else{
//imageView.setBackgroundResource(R.drawable.bg_control_oval_selector);
}
imageView.setSelected(getSelectPosition() == getAdapterPosition());
}
}

View File

@@ -0,0 +1,28 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.adapters.vh.BaseViewHolder;
import com.yunbao.faceunity.entity.BaseBean;
public class FilterViewHolder extends BaseViewHolder {
private ImageView icon;
private TextView title;
public FilterViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.iv_control);
title = itemView.findViewById(R.id.tv_control);
}
@Override
public void setData(BaseBean data) {
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
}
}

View File

@@ -0,0 +1,28 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class FineStickerViewHolder extends BaseViewHolder {
ImageView imageView;
public FineStickerViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.iv_control);
}
@Override
public void setData(BaseBean data) {
if (data.getImageUrl().isEmpty()) {
imageView.setImageResource(R.mipmap.icon_control_none);
} else {
ImgLoader.display(imageView.getContext(), data.getImageUrl(), imageView);
}
}
}

View File

@@ -0,0 +1,39 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class MakeupViewHolder extends BaseViewHolder {
private ImageView icon;
private TextView title;
private int index = -1;
public MakeupViewHolder(@NonNull View itemView) {
super(itemView);
icon = itemView.findViewById(R.id.iv_control);
title = itemView.findViewById(R.id.tv_control);
itemView.setOnClickListener(v -> {
setSelectPosition(getAdapterPosition());
});
}
@Override
public void setData(BaseBean data) {
itemView.setTag(data);
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
if (getSelectPosition() == getAdapterPosition()) {
icon.setSelected(true);
title.setSelected(true);
return;
}
icon.setSelected(false);
title.setSelected(false);
}
}

View File

@@ -0,0 +1,22 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class StickerViewHolder extends BaseViewHolder{
ImageView imageView;
public StickerViewHolder(@NonNull View itemView) {
super(itemView);
imageView=itemView.findViewById(R.id.iv_control);
}
@Override
public void setData(BaseBean data) {
imageView.setImageResource(data.getImageRes());
}
}

View File

@@ -0,0 +1,27 @@
package com.yunbao.faceunity.adapters.vh;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.yunbao.faceunity.R;
import com.yunbao.faceunity.entity.BaseBean;
public class StyleViewHolder extends BaseViewHolder{
private ImageView icon;
private TextView title;
public StyleViewHolder(@NonNull View itemView) {
super(itemView);
icon=itemView.findViewById(R.id.iv_control);
title=itemView.findViewById(R.id.tv_control);
itemView.setOnClickListener(v -> setSelectPosition(getAdapterPosition()));
}
@Override
public void setData(BaseBean data) {
icon.setImageResource(data.getImageRes());
title.setText(data.getDesRes());
}
}