39个文件已修改
51个文件已添加
1 文件已重命名
2个文件已删除
| | |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <!-- 网络相关 --> |
| | | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
| | | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> |
| | | <uses-permission android:name="android.permission.INTERNET" /> |
| | | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> |
| | | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> |
| | | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
| | | |
| | | <uses-permission android:name="android.permission.READ_CONTACTS"/> |
| | | |
| | | <!-- 外部存储 --> |
| | | <!-- Android 13开始,如果你的应用targetSdk指定到了33或以上,READ_EXTERNAL_STORAGE权限就完全失去了作用,需要细化--> |
| | | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> |
| | | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
| | | <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> |
| | | <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> |
| | | <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> |
| | | <uses-permission android:name="android.permission.RECORD_AUDIO" /> |
| | | <!--Android 13版本适配,细化存储权限,READ_EXTERNAL_STORAGE无法再使用--> |
| | | <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> |
| | | <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" /> |
| | | <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> |
| | | |
| | | <!-- 震动权限 --> |
| | | <uses-permission android:name="android.permission.VIBRATE" /> |
| | | |
| | | <!-- 蓝牙权限 --> |
| | | <uses-permission android:name="android.permission.BLUETOOTH" /> |
| | | |
| | | |
| | | <!-- 拍照权限 --> |
| | | <uses-permission android:name="android.permission.CAMERA" /> |
| | | |
| | | <!-- 安装权限 --> |
| | | <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> |
| | | |
| | | <!-- 定位权限(用于 WebView 定位)--> |
| | | <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> |
| | | <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> |
| | | |
| | | |
| | | <queries package="${applicationId}"> |
| | | <intent> |
| | | <action android:name="android.media.action.IMAGE_CAPTURE"> |
| | | |
| | | </action> |
| | | </intent> |
| | | <intent> |
| | | <action android:name="android.media.action.ACTION_VIDEO_CAPTURE"> |
| | | |
| | | </action> |
| | | </intent> |
| | | </queries> |
| | | |
| | | <application |
| | | android:name=".MyApplication" |
| | | android:allowBackup="true" |
| | |
| | | <activity |
| | | android:name=".ui.function.CreateFamilyProjectActivity" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".ui.function.FamilyAssetsActivity" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".ui.function.FamilyAssetsDetailActivity" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".ui.function.HomeDevicesActivity" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".ui.function.HomeDevicesDetailActivity" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".ui.function.GrowthExperienceActivity" |
| | | android:exported="false" /> |
| | | </application> |
| | | |
| | | </manifest> |
| | |
| | | package com.application.zhangshi_app_android; |
| | | |
| | | import com.android.app_base.base.BaseApplication; |
| | | import com.application.zhangshi_app_android.other.MyTitleBarStyle; |
| | | import com.hjq.bar.TitleBar; |
| | | import com.hjq.bar.style.TransparentBarStyle; |
| | | |
| | | //import me.jessyan.autosize.AutoSizeConfig; |
| | | |
| | |
| | | public void onCreate() { |
| | | super.onCreate(); |
| | | // 初始化 TitleBar 默认样式 |
| | | // TitleBar.setDefaultStyle(new TransparentBarStyle()); |
| | | TitleBar.setDefaultStyle(new MyTitleBarStyle()); |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.adapter; |
| | | |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.view.View; |
| | | import android.view.animation.Animation; |
| | | import android.view.animation.Transformation; |
| | | import android.widget.CompoundButton; |
| | | import android.widget.FrameLayout; |
| | | |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.android.app_base.base.adapter.BaseRVAdapter; |
| | | import com.android.app_base.manager.AppManager; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding; |
| | | import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivity; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 19:52 |
| | | * @desc 家庭资产 recyclerView 的 adapter |
| | | */ |
| | | public class FamilyAssetsRvAdapter extends BaseRVAdapter<FamilyAssetsBean, ItemFamilyAssetsBinding, FamilyAssetsRvAdapter.ViewHolder> { |
| | | |
| | | private FamilyAssetsActivityViewModel viewModel; |
| | | |
| | | public FamilyAssetsRvAdapter(Context context) { |
| | | super(context); |
| | | } |
| | | |
| | | public FamilyAssetsRvAdapter(Context context, FamilyAssetsActivityViewModel viewModel) { |
| | | super(context); |
| | | this.viewModel = viewModel; |
| | | } |
| | | |
| | | @Override |
| | | protected int getLayoutId() { |
| | | return R.layout.item_family_assets; |
| | | } |
| | | |
| | | @Override |
| | | protected ViewHolder getViewHolder(ItemFamilyAssetsBinding itemBind) { |
| | | return new ViewHolder(itemBind); |
| | | } |
| | | |
| | | @Override |
| | | protected void onBind(ViewHolder holder, int position) { |
| | | holder.getBinding().setBean(mDataList.get(position)); |
| | | if (position % 2 != 0){ |
| | | holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue)); |
| | | }else { |
| | | holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink)); |
| | | } |
| | | holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | if (holder.isExpended){ |
| | | int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); |
| | | int distanceToCollapse = (int) (initialHeight - collapsedHeight); |
| | | |
| | | Animation a = new Animation() { |
| | | @Override |
| | | protected void applyTransformation(float interpolatedTime, Transformation t) { |
| | | if (interpolatedTime == 1){ |
| | | } |
| | | holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime)); |
| | | holder.getBinding().cardView.requestLayout(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean willChangeBounds() { |
| | | return true; |
| | | } |
| | | }; |
| | | a.setDuration(500); |
| | | holder.getBinding().cardView.startAnimation(a); |
| | | holder.isExpended = false; |
| | | }else{ |
| | | final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); |
| | | int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | int distanceToExpand = targetHeight - initialHeight; |
| | | Animation a = new Animation() { |
| | | @Override |
| | | protected void applyTransformation(float interpolatedTime, Transformation t) { |
| | | if (interpolatedTime == 1){ |
| | | } |
| | | holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime)); |
| | | holder.getBinding().cardView.requestLayout(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean willChangeBounds() { |
| | | return true; |
| | | } |
| | | }; |
| | | a.setDuration(500); |
| | | holder.getBinding().cardView.startAnimation(a); |
| | | holder.isExpended = true; |
| | | } |
| | | } |
| | | }); |
| | | holder.getBinding().layoutContent.setOnClickListener(v -> { |
| | | AppManager.getAppManager().startActivity( |
| | | new Intent(getRecyclerView().getContext(), FamilyAssetsDetailActivity.class) |
| | | .putExtra("bean",mDataList.get(position))); |
| | | }); |
| | | ImageRvAdapter adapter = new ImageRvAdapter(mContext); |
| | | holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); |
| | | holder.getBinding().rvImage.setAdapter(adapter); |
| | | String url = mDataList.get(position).getUrl(); |
| | | if (url == null||url.isEmpty()){ |
| | | return; |
| | | } |
| | | List<String> list; |
| | | if (url.contains(",")){ |
| | | String[] split = url.split(","); |
| | | list = new ArrayList<>(Arrays.asList(split)); |
| | | }else { |
| | | list = new ArrayList<>(); |
| | | list.add(url); |
| | | } |
| | | adapter.setData(list); |
| | | } |
| | | |
| | | public static class ViewHolder extends BaseViewHolder<ItemFamilyAssetsBinding>{ |
| | | private boolean isExpended; |
| | | |
| | | public ViewHolder(ItemFamilyAssetsBinding binding) { |
| | | super(binding); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | import androidx.lifecycle.LiveData; |
| | | import androidx.lifecycle.MutableLiveData; |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.android.app_base.base.adapter.BaseRVAdapter; |
| | |
| | | holder.getBinding().cardView.startAnimation(a); |
| | | holder.isExpended = true; |
| | | } |
| | | holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | AppManager.getAppManager().startActivity( |
| | | new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class) |
| | | .putExtra(BaseConfig.EXTRA_TYPE,0) |
| | | .putExtra("bean",mDataList.get(position))); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | holder.getBinding().layoutModify.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | AppManager.getAppManager().startActivity( |
| | | new Intent(getRecyclerView().getContext(), CreateFamilyProjectActivity.class) |
| | | .putExtra(BaseConfig.EXTRA_TYPE,0) |
| | | .putExtra("bean",mDataList.get(position))); |
| | | } |
| | | }); |
| | | holder.getBinding().layoutDelete.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | |
| | | } |
| | | }); |
| | | ImageRvAdapter adapter = new ImageRvAdapter(mContext); |
| | | mDataList.get(position).setUrl(mDataList.get(position).getUrl()); |
| | | adapter.setData(mDataList.get(position).getUrlList()); |
| | | holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); |
| | | holder.getBinding().rvImage.setAdapter(adapter); |
| | | } |
| | | |
| | | public void setCheckable(boolean b) { |
New file |
| | |
| | | package com.application.zhangshi_app_android.adapter; |
| | | |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.view.View; |
| | | import android.view.animation.Animation; |
| | | import android.view.animation.Transformation; |
| | | import android.widget.FrameLayout; |
| | | |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.android.app_base.base.adapter.BaseRVAdapter; |
| | | import com.android.app_base.manager.AppManager; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesBean; |
| | | import com.application.zhangshi_app_android.databinding.ItemFamilyAssetsBinding; |
| | | import com.application.zhangshi_app_android.databinding.ItemHomeDevicesBinding; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivity; |
| | | import com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivity; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 0:20 |
| | | * @desc 家庭设备 recyclerView 的 adapter |
| | | */ |
| | | public class HomeDevicesRvAdapter extends BaseRVAdapter<HomeDevicesBean, ItemHomeDevicesBinding, HomeDevicesRvAdapter.ViewHolder>{ |
| | | public HomeDevicesRvAdapter(Context context) { |
| | | super(context); |
| | | } |
| | | |
| | | @Override |
| | | protected int getLayoutId() { |
| | | return R.layout.item_home_devices; |
| | | } |
| | | |
| | | @Override |
| | | protected void onBind(ViewHolder holder, int position) { |
| | | holder.getBinding().setBean(mDataList.get(position)); |
| | | if (position % 2 != 0){ |
| | | holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_blue)); |
| | | }else { |
| | | holder.getBinding().cardView.setCardBackgroundColor(mContext.getColor(R.color.color_card_pink)); |
| | | } |
| | | holder.getBinding().layoutTitle.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | if (holder.isExpended){ |
| | | int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | int collapsedHeight = holder.getBinding().layoutTitle.getMeasuredHeight(); |
| | | int distanceToCollapse = (int) (initialHeight - collapsedHeight); |
| | | |
| | | Animation a = new Animation() { |
| | | @Override |
| | | protected void applyTransformation(float interpolatedTime, Transformation t) { |
| | | if (interpolatedTime == 1){ |
| | | } |
| | | holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight - (distanceToCollapse * interpolatedTime)); |
| | | holder.getBinding().cardView.requestLayout(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean willChangeBounds() { |
| | | return true; |
| | | } |
| | | }; |
| | | a.setDuration(500); |
| | | holder.getBinding().cardView.startAnimation(a); |
| | | holder.isExpended = false; |
| | | }else{ |
| | | final int initialHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | holder.getBinding().cardView.measure(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); |
| | | int targetHeight = holder.getBinding().cardView.getMeasuredHeight(); |
| | | int distanceToExpand = targetHeight - initialHeight; |
| | | Animation a = new Animation() { |
| | | @Override |
| | | protected void applyTransformation(float interpolatedTime, Transformation t) { |
| | | if (interpolatedTime == 1){ |
| | | } |
| | | holder.getBinding().cardView.getLayoutParams().height = (int) (initialHeight + (distanceToExpand * interpolatedTime)); |
| | | holder.getBinding().cardView.requestLayout(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean willChangeBounds() { |
| | | return true; |
| | | } |
| | | }; |
| | | a.setDuration(500); |
| | | holder.getBinding().cardView.startAnimation(a); |
| | | holder.isExpended = true; |
| | | } |
| | | } |
| | | }); |
| | | holder.getBinding().layoutContent.setOnClickListener(v -> { |
| | | AppManager.getAppManager().startActivity( |
| | | new Intent(getRecyclerView().getContext(), HomeDevicesDetailActivity.class) |
| | | .putExtra("bean",mDataList.get(position))); |
| | | }); |
| | | ImageRvAdapter adapter = new ImageRvAdapter(mContext); |
| | | holder.getBinding().rvImage.setLayoutManager(new GridLayoutManager(mContext,3)); |
| | | holder.getBinding().rvImage.setAdapter(adapter); |
| | | String url = mDataList.get(position).getUrl(); |
| | | if (url == null||url.isEmpty()){ |
| | | return; |
| | | } |
| | | List<String> list; |
| | | if (url.contains(",")){ |
| | | String[] split = url.split(","); |
| | | list = new ArrayList<>(Arrays.asList(split)); |
| | | }else { |
| | | list = new ArrayList<>(); |
| | | list.add(url); |
| | | } |
| | | adapter.setData(list); |
| | | } |
| | | |
| | | @Override |
| | | protected ViewHolder getViewHolder(ItemHomeDevicesBinding itemBind) { |
| | | return new ViewHolder(itemBind); |
| | | } |
| | | |
| | | public static class ViewHolder extends BaseViewHolder<ItemHomeDevicesBinding>{ |
| | | private boolean isExpended; |
| | | |
| | | public ViewHolder(ItemHomeDevicesBinding binding) { |
| | | super(binding); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.adapter; |
| | | |
| | | import android.content.Context; |
| | | import android.media.Image; |
| | | import android.view.View; |
| | | |
| | | import com.android.app_base.base.adapter.BaseRVAdapter; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.databinding.ItemImageBinding; |
| | | import com.application.zhangshi_app_android.ui.function.CreateFamilyProjectActivityViewModel; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.01. 22:42 |
| | | * @desc |
| | | */ |
| | | public class ImageRvAdapter extends BaseRVAdapter<String, ItemImageBinding, BaseRVAdapter.BaseViewHolder<ItemImageBinding>> { |
| | | |
| | | private boolean isEdited = false; |
| | | private CreateFamilyProjectActivityViewModel viewModel; |
| | | public ImageRvAdapter(Context context) { |
| | | super(context); |
| | | } |
| | | |
| | | public ImageRvAdapter(Context context, CreateFamilyProjectActivityViewModel viewModel) { |
| | | super(context); |
| | | this.viewModel = viewModel; |
| | | } |
| | | @Override |
| | | protected int getLayoutId() { |
| | | return R.layout.item_image; |
| | | } |
| | | |
| | | @Override |
| | | protected void onBind(BaseViewHolder<ItemImageBinding> holder, int position) { |
| | | holder.getBinding().setUrl(mDataList.get(position)); |
| | | if (isEdited) { |
| | | holder.getBinding().ivDelete.setVisibility(View.VISIBLE); |
| | | } else { |
| | | holder.getBinding().ivDelete.setVisibility(View.GONE); |
| | | } |
| | | holder.getBinding().ivDelete.setOnClickListener(v -> { |
| | | FamilyMemorabiliaBean bean = viewModel.getBeanMutableLiveData().getValue(); |
| | | if (bean!=null){ |
| | | List<String> list = bean.getUrlList(); |
| | | list.remove(position); |
| | | bean.setUrlList(list); |
| | | viewModel.getBeanMutableLiveData().postValue(bean); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | protected BaseViewHolder<ItemImageBinding> getViewHolder(ItemImageBinding itemBind) { |
| | | return new BaseViewHolder<>(itemBind); |
| | | } |
| | | |
| | | public boolean isEdited() { |
| | | return isEdited; |
| | | } |
| | | |
| | | public void setIsEdited(boolean edited) { |
| | | isEdited = edited; |
| | | notifyItemRangeChanged(0,getItemCount()); |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 19:54 |
| | | * @desc 家族资产 |
| | | */ |
| | | public class FamilyAssetsBean implements Serializable { |
| | | private String address; |
| | | private String createTime; |
| | | private String holder; |
| | | private long id; |
| | | private String location; |
| | | private String remark; |
| | | private String title; |
| | | private String type; |
| | | private String url; |
| | | |
| | | public String getAddress() { return address; } |
| | | public void setAddress(String value) { this.address = value; } |
| | | |
| | | public String getCreateTime() { return createTime; } |
| | | public void setCreateTime(String value) { this.createTime = value; } |
| | | |
| | | public String getHolder() { return holder; } |
| | | public void setHolder(String value) { this.holder = value; } |
| | | |
| | | public long getId() { return id; } |
| | | public void setId(long value) { this.id = value; } |
| | | |
| | | public String getLocation() { return location; } |
| | | public void setLocation(String value) { this.location = value; } |
| | | |
| | | public String getRemark() { return remark; } |
| | | public void setRemark(String value) { this.remark = value; } |
| | | |
| | | public String getTitle() { return title; } |
| | | public void setTitle(String value) { this.title = value; } |
| | | |
| | | public String getType() { return type; } |
| | | public void setType(String value) { this.type = value; } |
| | | |
| | | public String getUrl() { return url; } |
| | | public void setUrl(String value) { this.url = value; } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 21:31 |
| | | * @desc |
| | | */ |
| | | public class FamilyAssetsResponseBean { |
| | | private List<FamilyAssetsBean> data; |
| | | private long pageNum; |
| | | private long pageSize; |
| | | private long total; |
| | | |
| | | public List<FamilyAssetsBean> getData() { return data; } |
| | | public void setData(List<FamilyAssetsBean> value) { this.data = value; } |
| | | |
| | | public long getPageNum() { return pageNum; } |
| | | public void setPageNum(long value) { this.pageNum = value; } |
| | | |
| | | public long getPageSize() { return pageSize; } |
| | | public void setPageSize(long value) { this.pageSize = value; } |
| | | |
| | | public long getTotal() { return total; } |
| | | public void setTotal(long value) { this.total = value; } |
| | | } |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import android.net.Uri; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | private String people; |
| | | private String remark; |
| | | private String title; |
| | | private List<String> url; |
| | | private String url; |
| | | private List<String> urlList; |
| | | |
| | | public String getAddress() { return address; } |
| | | public void setAddress(String value) { this.address = value; } |
| | | |
| | | public String getCreateTime() { return createTime; } |
| | | public void setCreateTime(String value) { this.createTime = value; } |
| | | |
| | | public void setUrl(String url) { |
| | | this.url = url; |
| | | if (url == null){ |
| | | return; |
| | | } |
| | | if (url.contains(",")){ |
| | | String[] split = url.split(","); |
| | | if (urlList == null){ |
| | | urlList = new ArrayList<>(Arrays.asList(split)); |
| | | }else { |
| | | urlList.clear(); |
| | | urlList.addAll(Arrays.asList(split)); |
| | | } |
| | | }else { |
| | | if (urlList == null){ |
| | | urlList = new ArrayList<>(); |
| | | }else { |
| | | urlList.clear(); |
| | | } |
| | | urlList.add(url); |
| | | } |
| | | } |
| | | |
| | | public List<String> getUrlList() { |
| | | return urlList; |
| | | } |
| | | |
| | | public void setUrlList(List<String> urlList) { |
| | | this.urlList = urlList; |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (String s : urlList) { |
| | | sb.append(s).append(","); |
| | | } |
| | | //去掉最后一个逗号 |
| | | if (sb.length() > 0) { |
| | | sb.deleteCharAt(sb.length() - 1); |
| | | } |
| | | this.url = sb.toString(); |
| | | } |
| | | |
| | | public String getUrl() { |
| | | return url; |
| | | } |
| | | |
| | | public long getId() { return id; } |
| | | public void setId(long value) { |
| | |
| | | public String getTitle() { return title; } |
| | | public void setTitle(String value) { this.title = value; } |
| | | |
| | | public List<String> getUrl() { return url; } |
| | | public void setUrl(List<String> value) { this.url = value; } |
| | | |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "FamilyMemorabiliaBean{" + |
| | | "id=" + id + |
| | | ", address='" + address + '\'' + |
| | | ", createTime='" + createTime + '\'' + |
| | | ", people='" + people + '\'' + |
| | | ", remark='" + remark + '\'' + |
| | | ", title='" + title + '\'' + |
| | | ", url='" + url + '\'' + |
| | | ", urlList=" + urlList + |
| | | '}'; |
| | | } |
| | | } |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.03.28. 15:57 |
| | |
| | | private String title; |
| | | |
| | | private String createTime; |
| | | private int pageNum; |
| | | private int pageSize; |
| | | private int pageNum = 1; |
| | | private int pageSize = 20; |
| | | |
| | | public String getPeople() { |
| | | return people; |
| | |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public Map<String, Object> getMap() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (people == null) { |
| | | people = ""; |
| | | } |
| | | if (address == null) { |
| | | address = ""; |
| | | } |
| | | if (remark == null) { |
| | | remark = ""; |
| | | } |
| | | if (title == null) { |
| | | title = ""; |
| | | } |
| | | if (createTime == null) { |
| | | createTime = ""; |
| | | } |
| | | map.put("people", people); |
| | | map.put("address", address); |
| | | map.put("remark", remark); |
| | | map.put("title", title); |
| | | map.put("createTime", createTime); |
| | | map.put("pageNum", pageNum); |
| | | map.put("pageSize", pageSize); |
| | | return map; |
| | | } |
| | | } |
| | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Gss |
| | | * @date 2023.03.31. 17:47 |
| | | * @desc 成长经历 bean 类 |
| | | */ |
| | | public class GrowthExperienceBean implements Serializable { |
| | | private String idName; |
| | | private String usedName; |
| | | private String gender; |
| | | private String nationality; |
| | | private String ethnicGroup; |
| | | private String marriageCondition; |
| | | private String politicalStatus; |
| | | private String contactNumber; |
| | | private String idNumber; |
| | | private String address; |
| | | private String duringTime; |
| | | private String relationship; |
| | | private String School; |
| | | private String passCheck; |
| | | private String abroadZone; |
| | | private List<String> url; |
| | | /** |
| | | * @author Gss |
| | | * @date 2023.03.31. 17:47 |
| | | * @desc 成长经历 bean 类 |
| | | */ |
| | | public class GrowthExperienceBean implements Serializable { |
| | | private String idName; |
| | | private String usedName; |
| | | private String gender; |
| | | private String nationality; |
| | | private String ethnicGroup; |
| | | private String marriageCondition; |
| | | private String politicalStatus; |
| | | private String contactNumber; |
| | | private String idNumber; |
| | | private String address; |
| | | private String duringTime; |
| | | private String relationship; |
| | | private String School; |
| | | private String passCheck; |
| | | private String abroadZone; |
| | | private List<String> url; |
| | | |
| | | public String getAddress() { return address; } |
| | | public void setAddress(String value) { this.address = value; } |
| | | public String getAddress() { return address; } |
| | | public void setAddress(String value) { this.address = value; } |
| | | |
| | | public String getIdName() { return idName; } |
| | | public void setIdName(String value) { this.idName = value; } |
| | | public String getUsedName() { return usedName; } |
| | | public void setUsedName(String value) { this.usedName = value; } |
| | | public String getIdName() { return idName; } |
| | | public void setIdName(String value) { this.idName = value; } |
| | | public String getUsedName() { return usedName; } |
| | | public void setUsedName(String value) { this.usedName = value; } |
| | | |
| | | |
| | | public String getGender() { return gender; } |
| | | public void setGender(String value) { this.gender = value; } |
| | | public String getGender() { return gender; } |
| | | public void setGender(String value) { this.gender = value; } |
| | | |
| | | public String getNationality() { return nationality; } |
| | | public void setNationality(String value) { this.nationality = value; } |
| | | public String getNationality() { return nationality; } |
| | | public void setNationality(String value) { this.nationality = value; } |
| | | |
| | | public String getEthnicGroup() { return ethnicGroup; } |
| | | public void setEthnicGroup(String value) { this.ethnicGroup = value; } |
| | | public String getEthnicGroup() { return ethnicGroup; } |
| | | public void setEthnicGroup(String value) { this.ethnicGroup = value; } |
| | | |
| | | public String getMarriageCondition() { return marriageCondition; } |
| | | public void setMarriageCondition(String value) { this.marriageCondition = value; } |
| | | public String getMarriageCondition() { return marriageCondition; } |
| | | public void setMarriageCondition(String value) { this.marriageCondition = value; } |
| | | |
| | | public String getPoliticalStatus() { return politicalStatus; } |
| | | public void setPoliticalStatus(String value) { this.politicalStatus = value; } |
| | | public String getPoliticalStatus() { return politicalStatus; } |
| | | public void setPoliticalStatus(String value) { this.politicalStatus = value; } |
| | | |
| | | public String getContactNumber() { return contactNumber; } |
| | | public void setContactNumber(String value) { this.contactNumber = value; } |
| | | public String getContactNumber() { return contactNumber; } |
| | | public void setContactNumber(String value) { this.contactNumber = value; } |
| | | |
| | | public String getIdNumber() { return idNumber; } |
| | | public void setIdNumber(String value) { this.idNumber = value; } |
| | | public String getIdNumber() { return idNumber; } |
| | | public void setIdNumber(String value) { this.idNumber = value; } |
| | | |
| | | public String getDuringTime() { return duringTime; } |
| | | public void setDuringTime(String value) { this.duringTime = value; } |
| | | public String getDuringTime() { return duringTime; } |
| | | public void setDuringTime(String value) { this.duringTime = value; } |
| | | |
| | | public String getSchool() { return School; } |
| | | public void setSchool(String value) { this.School = value; } |
| | | public String getSchool() { return School; } |
| | | public void setSchool(String value) { this.School = value; } |
| | | |
| | | public String getRelationship() { return relationship; } |
| | | public void setRelationship(String value) { this.relationship = value; } |
| | | public String getRelationship() { return relationship; } |
| | | public void setRelationship(String value) { this.relationship = value; } |
| | | |
| | | public String getPassCheck() { return passCheck; } |
| | | public void setPassCheck(String value) { this.passCheck = value; } |
| | | public String getAbroadZone() { return abroadZone; } |
| | | public void setAbroadZone(String value) { this.abroadZone = value; } |
| | | public List<String> getUrl() { return url; } |
| | | public void setUrl(List<String> value) { this.url = value; } |
| | | public String getPassCheck() { return passCheck; } |
| | | public void setPassCheck(String value) { this.passCheck = value; } |
| | | public String getAbroadZone() { return abroadZone; } |
| | | public void setAbroadZone(String value) { this.abroadZone = value; } |
| | | public List<String> getUrl() { return url; } |
| | | public void setUrl(List<String> value) { this.url = value; } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | * @desc 获取成长经历的返回类 |
| | | */ |
| | | public class GrowthExperienceResponseBean { |
| | | private List<GrowthExerienceResponseBean> data; |
| | | private long pageNum; |
| | | private long pageSize; |
| | | private long total; |
| | | |
| | | public List<FamilyMemorabiliaBean> getData() { return data; } |
| | | public void setData(List<FamilyMemorabiliaBean> value) { this.data = value; } |
| | | |
| | | public long getPageNum() { return pageNum; } |
| | | public void setPageNum(long value) { this.pageNum = value; } |
| | | |
| | | public long getPageSize() { return pageSize; } |
| | | public void setPageSize(long value) { this.pageSize = value; } |
| | | |
| | | public long getTotal() { return total; } |
| | | public void setTotal(long value) { this.total = value; } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 0:22 |
| | | * @desc 家庭设备 bean |
| | | */ |
| | | public class HomeDevicesBean implements Serializable { |
| | | private long id; |
| | | private String name; |
| | | private String createTime; |
| | | private String people; |
| | | private String content; |
| | | private String address; |
| | | private String remark; |
| | | private String url; |
| | | |
| | | public HomeDevicesBean(long id, String name, String createTime, String people, String content, String address, String remark, String url) { |
| | | this.id = id; |
| | | this.name = name; |
| | | this.createTime = createTime; |
| | | this.people = people; |
| | | this.content = content; |
| | | this.address = address; |
| | | this.remark = remark; |
| | | this.url = url; |
| | | } |
| | | |
| | | public String getName() { |
| | | return name; |
| | | } |
| | | |
| | | public void setName(String name) { |
| | | this.name = name; |
| | | } |
| | | |
| | | public String getCreateTime() { |
| | | return createTime; |
| | | } |
| | | |
| | | public void setCreateTime(String createTime) { |
| | | this.createTime = createTime; |
| | | } |
| | | |
| | | public String getPeople() { |
| | | return people; |
| | | } |
| | | |
| | | public void setPeople(String people) { |
| | | this.people = people; |
| | | } |
| | | |
| | | public String getContent() { |
| | | return content; |
| | | } |
| | | |
| | | public void setContent(String content) { |
| | | this.content = content; |
| | | } |
| | | |
| | | public String getAddress() { |
| | | return address; |
| | | } |
| | | |
| | | public void setAddress(String address) { |
| | | this.address = address; |
| | | } |
| | | |
| | | public String getRemark() { |
| | | return remark; |
| | | } |
| | | |
| | | public void setRemark(String remark) { |
| | | this.remark = remark; |
| | | } |
| | | |
| | | public String getUrl() { |
| | | return url; |
| | | } |
| | | |
| | | public void setUrl(String url) { |
| | | this.url = url; |
| | | } |
| | | public long getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(long id) { |
| | | this.id = id; |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 15:03 |
| | | * @desc |
| | | */ |
| | | public class HomeDevicesResponseBean { |
| | | private List<HomeDevicesBean> data; |
| | | private long pageNum; |
| | | private long pageSize; |
| | | private long total; |
| | | |
| | | public List<HomeDevicesBean> getData() { return data; } |
| | | public void setData(List<HomeDevicesBean> value) { this.data = value; } |
| | | |
| | | public long getPageNum() { return pageNum; } |
| | | public void setPageNum(long value) { this.pageNum = value; } |
| | | |
| | | public long getPageSize() { return pageSize; } |
| | | public void setPageSize(long value) { this.pageSize = value; } |
| | | |
| | | public long getTotal() { return total; } |
| | | public void setTotal(long value) { this.total = value; } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.bean; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.02. 22:57 |
| | | * @desc 上传文件返回实体类 |
| | | */ |
| | | public class UploadFileResponseBean { |
| | | String fileName; |
| | | String newFileName; |
| | | String url; |
| | | String originalFilename; |
| | | |
| | | public UploadFileResponseBean(String fileName, String newFileName, String url, String originalFilename) { |
| | | this.fileName = fileName; |
| | | this.newFileName = newFileName; |
| | | this.url = url; |
| | | this.originalFilename = originalFilename; |
| | | } |
| | | |
| | | public String getFileName() { |
| | | return fileName; |
| | | } |
| | | |
| | | public void setFileName(String fileName) { |
| | | this.fileName = fileName; |
| | | } |
| | | |
| | | public String getNewFileName() { |
| | | return newFileName; |
| | | } |
| | | |
| | | public void setNewFileName(String newFileName) { |
| | | this.newFileName = newFileName; |
| | | } |
| | | |
| | | public String getUrl() { |
| | | return url; |
| | | } |
| | | |
| | | public void setUrl(String url) { |
| | | this.url = url; |
| | | } |
| | | |
| | | public String getOriginalFilename() { |
| | | return originalFilename; |
| | | } |
| | | |
| | | public void setOriginalFilename(String originalFilename) { |
| | | this.originalFilename = originalFilename; |
| | | } |
| | | } |
| | |
| | | import com.android.app_base.base.model.BaseModel; |
| | | import com.android.app_base.http.ResultData; |
| | | import com.application.zhangshi_app_android.bean.CaptchaImageBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; |
| | | import com.application.zhangshi_app_android.bean.LoginRequestBean; |
| | | import com.application.zhangshi_app_android.bean.LoginResponseBean; |
| | | import com.application.zhangshi_app_android.bean.UploadFileResponseBean; |
| | | import com.application.zhangshi_app_android.data.source.HttpDataSource; |
| | | import com.application.zhangshi_app_android.data.source.LocalDataSource; |
| | | import com.application.zhangshi_app_android.data.source.http.HttpDataSourceImpl; |
| | | import com.application.zhangshi_app_android.data.source.local.LocalDataSourceImpl; |
| | | |
| | | import java.io.File; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.function.DoubleUnaryOperator; |
| | | |
| | | import io.reactivex.Completable; |
| | | import io.reactivex.Observable; |
| | | import io.reactivex.Observer; |
| | | import okhttp3.MultipartBody; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | * 获取家大事记 |
| | | */ |
| | | @Override |
| | | public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) { |
| | | return mHttpDataSource.getFamilyMemorabilia(queryMap); |
| | | public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) { |
| | | return mHttpDataSource.getFamilyMemorabilia(paramsMap); |
| | | } |
| | | /** |
| | | * 增加家大事记 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 上传文件 |
| | | */ |
| | | public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) { |
| | | return mHttpDataSource.uploadFile(file); |
| | | } |
| | | |
| | | /** |
| | | * 获取家庭资产 |
| | | */ |
| | | public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String,Object> paramsMap) { |
| | | return mHttpDataSource.getFamilyAssets(paramsMap); |
| | | } |
| | | |
| | | /** |
| | | * 获取家庭设备 |
| | | */ |
| | | public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) { |
| | | return mHttpDataSource.getHomeDevices(paramsMap); |
| | | } |
| | | |
| | | /** |
| | | * @see LocalDataSourceImpl |
| | | */ |
| | | } |
| | |
| | | |
| | | import com.android.app_base.http.ResultData; |
| | | import com.application.zhangshi_app_android.bean.CaptchaImageBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; |
| | | import com.application.zhangshi_app_android.bean.LoginRequestBean; |
| | | import com.application.zhangshi_app_android.bean.LoginResponseBean; |
| | | import com.application.zhangshi_app_android.bean.UploadFileResponseBean; |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import io.reactivex.Observable; |
| | | import io.reactivex.Observer; |
| | | import okhttp3.MultipartBody; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | /** |
| | | * 获取家大事记 |
| | | */ |
| | | Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap); |
| | | Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap); |
| | | |
| | | /** |
| | | * 增加家大事记 |
| | |
| | | * 修改 |
| | | */ |
| | | Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean); |
| | | |
| | | /** |
| | | * 上传文件 |
| | | */ |
| | | Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file); |
| | | |
| | | /** |
| | | * 获取家庭资产 |
| | | */ |
| | | Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap); |
| | | /** |
| | | * 获取家庭设备 |
| | | */ |
| | | Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap); |
| | | } |
| | |
| | | |
| | | import com.android.app_base.http.ResultData; |
| | | import com.application.zhangshi_app_android.bean.CaptchaImageBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; |
| | | import com.application.zhangshi_app_android.bean.LoginRequestBean; |
| | | import com.application.zhangshi_app_android.bean.LoginResponseBean; |
| | | import com.application.zhangshi_app_android.bean.UploadFileResponseBean; |
| | | |
| | | import java.io.File; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | import io.reactivex.Observable; |
| | | import okhttp3.MultipartBody; |
| | | import retrofit2.http.Body; |
| | | import retrofit2.http.DELETE; |
| | | import retrofit2.http.GET; |
| | | import retrofit2.http.Multipart; |
| | | import retrofit2.http.POST; |
| | | import retrofit2.http.PUT; |
| | | import retrofit2.http.Part; |
| | | import retrofit2.http.Path; |
| | | import retrofit2.http.Query; |
| | | import retrofit2.http.QueryMap; |
| | |
| | | * 获取家大事件 |
| | | */ |
| | | @GET("family/zfEvent/all") |
| | | Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> queryMap); |
| | | Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(@QueryMap Map<String,Object> paramsMap); |
| | | /** |
| | | * 增加家大事记 |
| | | */ |
| | |
| | | Observable<ResultData<String>> updateFamilyMemorabilia(@Body FamilyMemorabiliaBean familyMemorabiliaBean); |
| | | |
| | | |
| | | /** |
| | | * 上传文件 |
| | | */ |
| | | @Multipart |
| | | @POST("/common/upload") |
| | | Observable<ResultData<UploadFileResponseBean>> uploadFile(@Part MultipartBody.Part file); |
| | | |
| | | /** |
| | | * 获取家庭资产 |
| | | */ |
| | | @GET("/family/property/all") |
| | | Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(@QueryMap Map<String, Object> paramsMap); |
| | | |
| | | /** |
| | | * 获取家庭设备 |
| | | */ |
| | | @GET("")//TODO 获取家庭设备 |
| | | Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(@QueryMap Map<String, Object> paramsMap); |
| | | } |
| | |
| | | import com.android.app_base.http.ResultData; |
| | | import com.android.app_base.http.RetrofitManager; |
| | | import com.application.zhangshi_app_android.bean.CaptchaImageBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; |
| | | import com.application.zhangshi_app_android.bean.LoginRequestBean; |
| | | import com.application.zhangshi_app_android.bean.LoginResponseBean; |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.application.zhangshi_app_android.bean.UploadFileResponseBean; |
| | | import com.application.zhangshi_app_android.data.source.HttpDataSource; |
| | | |
| | | import java.util.Map; |
| | | |
| | | import io.reactivex.Observable; |
| | | import okhttp3.MultipartBody; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | * 获取家大事记 |
| | | */ |
| | | @Override |
| | | public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String, Object> queryMap) { |
| | | return apiService.getFamilyMemorabilia(queryMap); |
| | | public Observable<ResultData<FamilyMemorabiliaResponseBean>> getFamilyMemorabilia(Map<String,Object> paramsMap) { |
| | | return apiService.getFamilyMemorabilia(paramsMap); |
| | | } |
| | | /** |
| | | * 增加家大事记 |
| | |
| | | public Observable<ResultData<String>> updateFamilyMemorabilia(FamilyMemorabiliaBean familyMemorabiliaBean) { |
| | | return apiService.updateFamilyMemorabilia(familyMemorabiliaBean); |
| | | } |
| | | |
| | | /** |
| | | * 上传文件 |
| | | */ |
| | | @Override |
| | | public Observable<ResultData<UploadFileResponseBean>> uploadFile(MultipartBody.Part file) { |
| | | return apiService.uploadFile(file); |
| | | } |
| | | |
| | | /** |
| | | * 获取家庭资产 |
| | | */ |
| | | @Override |
| | | public Observable<ResultData<FamilyAssetsResponseBean>> getFamilyAssets(Map<String, Object> paramsMap) { |
| | | return apiService.getFamilyAssets(paramsMap); |
| | | } |
| | | |
| | | /** |
| | | * 获取家庭设备 |
| | | */ |
| | | @Override |
| | | public Observable<ResultData<HomeDevicesResponseBean>> getHomeDevices(Map<String, Object> paramsMap) { |
| | | return apiService.getHomeDevices(paramsMap); |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.other; |
| | | |
| | | import android.content.Context; |
| | | import android.content.res.ColorStateList; |
| | | import android.graphics.drawable.ColorDrawable; |
| | | import android.graphics.drawable.Drawable; |
| | | import android.util.TypedValue; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.appcompat.content.res.AppCompatResources; |
| | | |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.hjq.bar.style.CommonBarStyle; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.03.30. 20:11 |
| | | * @desc TitleBar统一样式 |
| | | */ |
| | | public class MyTitleBarStyle extends CommonBarStyle { |
| | | @Override |
| | | public TextView createLeftView(Context context) { |
| | | return super.createLeftView(context); |
| | | } |
| | | |
| | | @Override |
| | | public Drawable getTitleBarBackground(Context context) { |
| | | return new ColorDrawable(context.getColor(R.color.color_title_bar_background)); |
| | | } |
| | | |
| | | @Override |
| | | public Drawable getLeftTitleBackground(Context context) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Drawable getRightTitleBackground(Context context) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Drawable getBackButtonDrawable(Context context) { |
| | | return AppCompatResources.getDrawable(context,R.drawable.ic_menu); |
| | | } |
| | | |
| | | @Override |
| | | public ColorStateList getTitleColor(Context context) { |
| | | return ColorStateList.valueOf(0xFFFFFFFF); |
| | | } |
| | | |
| | | @Override |
| | | public ColorStateList getLeftTitleColor(Context context) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public ColorStateList getRightTitleColor(Context context) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Drawable getLineDrawable(Context context) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public int getLeftHorizontalPadding(Context context) { |
| | | return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics()); |
| | | } |
| | | |
| | | @Override |
| | | public float getTitleSize(Context context) { |
| | | return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20, context.getResources().getDisplayMetrics()); |
| | | } |
| | | |
| | | @Override |
| | | public int getLeftIconPadding(Context context) { |
| | | return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 16, context.getResources().getDisplayMetrics()); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui; |
| | | |
| | | import android.graphics.Color; |
| | | import android.view.ViewGroup; |
| | | import android.widget.ImageView; |
| | | import android.widget.LinearLayout; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.annotation.Nullable; |
| | | import androidx.databinding.DataBindingUtil; |
| | | import androidx.databinding.ViewDataBinding; |
| | | import androidx.drawerlayout.widget.DrawerLayout; |
| | | |
| | | import com.android.app_base.base.view.BaseActivity; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.manager.AppManager; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyAssetsActivity; |
| | | import com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivity; |
| | | import com.application.zhangshi_app_android.ui.function.GrowthExperienceActivity; |
| | | import com.application.zhangshi_app_android.ui.function.HomeDevicesActivity; |
| | | import com.hjq.bar.TitleBar; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.01. 18:21 |
| | | * @desc 该APP里统一侧拉栏的Activity基类 |
| | | */ |
| | | public abstract class DLBaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends BaseActivity<VDB,VM> { |
| | | /** |
| | | * 侧拉栏 |
| | | */ |
| | | private DrawerLayout mDrawerLayout; |
| | | private Map<Class,LinearLayout> classMap = new HashMap<>(); |
| | | @Override |
| | | protected VDB initViewBinding() { |
| | | if (isDrawerLayoutEnabled()){ |
| | | mDrawerLayout = new DrawerLayout(this); |
| | | mDrawerLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); |
| | | VDB mBinding = DataBindingUtil.inflate(getLayoutInflater(), getLayoutId(), mDrawerLayout, true); |
| | | if (getDrawerLayoutId() > 0){ |
| | | getLayoutInflater().inflate(getDrawerLayoutId(), mDrawerLayout, true); |
| | | }else { |
| | | throw new IllegalArgumentException("没给侧拉栏布局就不要开启侧拉栏啦"); |
| | | } |
| | | setContentView(mDrawerLayout); |
| | | return mBinding; |
| | | } |
| | | return super.initViewBinding(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 是否开启侧拉栏 |
| | | */ |
| | | protected boolean isDrawerLayoutEnabled() { |
| | | return true; |
| | | } |
| | | /** |
| | | * 获取侧拉栏的id |
| | | * @return layout的id |
| | | */ |
| | | protected int getDrawerLayoutId(){ |
| | | return R.layout.layout_drawer; |
| | | }; |
| | | |
| | | @Override |
| | | protected void onResume() { |
| | | super.onResume(); |
| | | |
| | | if (mDrawerLayout != null) { |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_home_root_net)); |
| | | classMap.put(FamilyMemorabiliaActivity.class,(LinearLayout) findViewById(R.id.dl_family_memorabilia)); |
| | | classMap.put(FamilyAssetsActivity.class,(LinearLayout) findViewById(R.id.dl_family_assets)); |
| | | classMap.put(HomeDevicesActivity.class,(LinearLayout) findViewById(R.id.dl_home_devices)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_honor_collection)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_little_doctor)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_clean_storage)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_contacts)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_pet)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_income_and_expenses)); |
| | | classMap.put(GrowthExperienceActivity.class,(LinearLayout) findViewById(R.id.dl_growing_up)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_marriage)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_property)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_hundred_wish)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_health_care)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_certificate_of_honor)); |
| | | classMap.put(null,(LinearLayout) findViewById(R.id.dl_privacy)); |
| | | setSelectItem(classMap.get(getClass())); |
| | | for (Map.Entry<Class, LinearLayout> set : classMap.entrySet()) { |
| | | set.getValue().setOnClickListener(v -> { |
| | | if (set.getKey() != null){ |
| | | AppManager.getAppManager().startActivity(set.getKey()); |
| | | } |
| | | }); |
| | | } |
| | | mDrawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow)); |
| | | } |
| | | } |
| | | private void setSelectItem(LinearLayout linearLayout) { |
| | | if (linearLayout == null){ |
| | | return; |
| | | } |
| | | TextView textView = (TextView) linearLayout.getChildAt(1); |
| | | ImageView imageView = (ImageView) linearLayout.getChildAt(2); |
| | | textView.setTextColor(Color.parseColor("#FFF6739F")); |
| | | imageView.setBackgroundResource(R.drawable.ic_vector_pink); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取DrawerLayout |
| | | */ |
| | | @Nullable |
| | | public DrawerLayout getDrawerLayout() { |
| | | return mDrawerLayout; |
| | | } |
| | | |
| | | @Override |
| | | public void onLeftClick(TitleBar titleBar) { |
| | | super.onRightClick(titleBar); |
| | | mDrawerLayout.open(); |
| | | } |
| | | } |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.graphics.drawable.ColorDrawable; |
| | | import android.os.Bundle; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.EditText; |
| | | import android.widget.PopupWindow; |
| | | |
| | | import androidx.annotation.Nullable; |
| | | import androidx.databinding.DataBindingUtil; |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.android.app_base.base.dialog.BaseDialog; |
| | | import com.android.app_base.base.dialog.UIDialog; |
| | | import com.android.app_base.base.view.BaseActivity; |
| | | import com.android.app_base.manager.UserManager; |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.android.app_base.utils.ToastUtils; |
| | | import com.android.app_base.widget.LinearItemDecoration; |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.adapter.ImageRvAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.databinding.ItemFamilyCreateBinding; |
| | | import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaCreateBinding; |
| | | import com.luck.picture.lib.entity.LocalMedia; |
| | | import com.luck.picture.lib.interfaces.OnResultCallbackListener; |
| | | |
| | | import java.io.File; |
| | | import java.util.ArrayList; |
| | | import java.util.function.Consumer; |
| | | |
| | | |
| | | /** |
| | | * @author Gss |
| | | * @date 2023.03.25. 16:00 |
| | | * @desc 家大事记 CreateFamilyProjectActivity |
| | | */ |
| | | public class CreateFamilyProjectActivity extends BaseActivity<ItemFamilyCreateBinding,CreateFamilyProjectActivityViewModel> { |
| | | public class CreateFamilyProjectActivity extends BaseActivity<ActivityFamilyMemorabiliaCreateBinding,CreateFamilyProjectActivityViewModel> { |
| | | private int type; |
| | | private int operateType; |
| | | private PopupWindow popupWindow; |
| | | private FamilyMemorabiliaBean bean; |
| | | private ImageRvAdapter adapter; |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.item_family_create; |
| | | return R.layout.activity_family_memorabilia_create; |
| | | } |
| | | |
| | | @Override |
| | |
| | | public void initParam() { |
| | | type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); |
| | | if (type == 0){ |
| | | FamilyMemorabiliaBean bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean"); |
| | | bean = (FamilyMemorabiliaBean) getIntent().getSerializableExtra("bean"); |
| | | if (bean!=null){ |
| | | viewModel.getBeanMutableLiveData().postValue(bean); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void initView() { |
| | | adapter = new ImageRvAdapter(this); |
| | | GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); |
| | | binding.rvImage.setLayoutManager(gridLayoutManager); |
| | | binding.rvImage.setNestedScrollingEnabled(false); |
| | | View footerView = View.inflate(this,R.layout.item_image_footer,null); |
| | | binding.rvImage.addFooterView(footerView); |
| | | footerView.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | UserManager.getInstance().selectImage(getSelfActivity(), 9, new OnResultCallbackListener<LocalMedia>() { |
| | | @Override |
| | | public void onResult(ArrayList<LocalMedia> result) { |
| | | if (result.size() == 0) return; |
| | | for (LocalMedia media : result) { |
| | | String path = media.getRealPath(); |
| | | File file = new File(path); |
| | | if (file.exists()) { |
| | | viewModel.uploadFile(file); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onCancel() { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | binding.rvImage.setAdapter(adapter); |
| | | |
| | | if (type == 1){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | viewModel.getTypeLiveData().postValue(true); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | viewModel.add(); |
| | | }); |
| | | }else { |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); |
| | | popupWindow = new PopupWindow(this); |
| | | // 设置布局文件 |
| | | popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.pop_operate_delete, null)); |
| | |
| | | // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 |
| | | popupWindow.setOutsideTouchable(true); |
| | | |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | if (operateType == 0){ |
| | | popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }else{ |
| | | viewModel.update(); |
| | | } |
| | | }); |
| | | popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | operateType = 1; |
| | | viewModel.getTypeLiveData().postValue(true); |
| | | popupWindow.dismiss(); |
| | | } |
| | | }); |
| | |
| | | .show(); |
| | | } |
| | | }); |
| | | viewModel.getTypeLiveData().postValue(false); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | |
| | | viewModel.getBeanMutableLiveData().observe(this,bean -> { |
| | | if (bean!=null){ |
| | | bean.setUrl(bean.getUrl()); |
| | | adapter.setData(bean.getUrlList()); |
| | | } |
| | | }); |
| | | viewModel.getTypeLiveData().observe(this,operateType -> { |
| | | if (operateType){ |
| | | if (type == 1) { |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | viewModel.add(); |
| | | }); |
| | | }else { |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | viewModel.update(); |
| | | }); |
| | | } |
| | | binding.rvImage.getFooterViews().forEach(new Consumer<View>() { |
| | | @Override |
| | | public void accept(View view) { |
| | | view.setVisibility(View.VISIBLE); |
| | | } |
| | | }); |
| | | setIsEdited(true); |
| | | }else { |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }); |
| | | binding.rvImage.getFooterViews().forEach(new Consumer<View>() { |
| | | @Override |
| | | public void accept(View view) { |
| | | view.setVisibility(View.GONE); |
| | | } |
| | | }); |
| | | setIsEdited(false); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | public void setIsEdited(boolean isEdited){ |
| | | disableAllEditText(getContentView(),isEdited); |
| | | adapter.setIsEdited(isEdited); |
| | | } |
| | | public void disableAllEditText(ViewGroup viewGroup,boolean isEdited) { |
| | | for (int i = 0; i < viewGroup.getChildCount(); i++) { |
| | | View child = viewGroup.getChildAt(i); |
| | | if (child instanceof ViewGroup) { |
| | | disableAllEditText((ViewGroup) child,isEdited); |
| | | } else if (child instanceof EditText) { |
| | | child.setEnabled(isEdited); |
| | | child.setFocusable(isEdited); |
| | | child.setFocusableInTouchMode(isEdited); |
| | | if (!isEdited){ |
| | | child.clearFocus(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.android.app_base.http.ResultData; |
| | | import com.android.app_base.manager.AppManager; |
| | | import com.android.app_base.utils.RxUtils; |
| | | import com.android.app_base.utils.ToastUtils; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.UploadFileResponseBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.io.File; |
| | | |
| | | import io.reactivex.Observer; |
| | | import io.reactivex.disposables.Disposable; |
| | | import okhttp3.MediaType; |
| | | import okhttp3.MultipartBody; |
| | | import okhttp3.RequestBody; |
| | | |
| | | public class CreateFamilyProjectActivityViewModel extends BaseViewModel<DataRepository> { |
| | | |
| | | private MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData; |
| | | private MutableLiveData<Boolean> typeLiveData;//true 编辑状态 false 展示状态 |
| | | public CreateFamilyProjectActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | |
| | | public void onNext(ResultData<String> stringResultData) { |
| | | if (stringResultData.getCode() == CODE_SUCCESS){ |
| | | messageLiveData.postValue("添加成功"); |
| | | AppManager.getAppManager().finishCurrentActivity(); |
| | | }else { |
| | | messageLiveData.postValue(stringResultData.getMsg()); |
| | | } |
| | |
| | | if (beanMutableLiveData == null){ |
| | | beanMutableLiveData = new MutableLiveData<>(); |
| | | } |
| | | if (beanMutableLiveData.getValue() == null){ |
| | | beanMutableLiveData.setValue(new FamilyMemorabiliaBean()); |
| | | } |
| | | return beanMutableLiveData; |
| | | } |
| | | |
| | | public void setBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaBean> beanMutableLiveData) { |
| | | this.beanMutableLiveData = beanMutableLiveData; |
| | | } |
| | | |
| | | public MutableLiveData<Boolean> getTypeLiveData() { |
| | | if (typeLiveData == null){ |
| | | typeLiveData = new MutableLiveData<>(); |
| | | } |
| | | return typeLiveData; |
| | | } |
| | | |
| | | public void setTypeLiveData(MutableLiveData<Boolean> typeLiveData) { |
| | | this.typeLiveData = typeLiveData; |
| | | } |
| | | |
| | | /** |
| | | * 上传电子文件 |
| | | */ |
| | | public void uploadFile(File file) { |
| | | RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), file); |
| | | MultipartBody.Part body = MultipartBody.Part.createFormData("uploadFile", file.getName(), requestBody); |
| | | model.uploadFile(body) |
| | | .compose(RxUtils.schedulersTransformer()) |
| | | .subscribe(new Observer<ResultData<UploadFileResponseBean>>() { |
| | | @Override |
| | | public void onSubscribe(Disposable d) { |
| | | addSubscribe(d); |
| | | } |
| | | |
| | | @Override |
| | | public void onNext(ResultData<UploadFileResponseBean> resultData) { |
| | | if (resultData.getCode() == CODE_SUCCESS){ |
| | | FamilyMemorabiliaBean bean = getBeanMutableLiveData().getValue(); |
| | | String url; |
| | | if (bean != null){ |
| | | url = bean.getUrl(); |
| | | if (url == null){ |
| | | url = resultData.getData().getUrl(); |
| | | }else { |
| | | url = url + "," + resultData.getData().getUrl(); |
| | | } |
| | | bean.setUrl(url); |
| | | beanMutableLiveData.postValue(bean); |
| | | } |
| | | }else { |
| | | messageLiveData.postValue(resultData.getMsg()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Throwable e) { |
| | | messageLiveData.postValue(e.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public void onComplete() { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.graphics.drawable.ColorDrawable; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.PopupWindow; |
| | | |
| | | import androidx.databinding.library.baseAdapters.BR; |
| | | import androidx.lifecycle.Observer; |
| | | |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.android.app_base.widget.LinearItemDecoration; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter; |
| | | import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 19:40 |
| | | * @desc |
| | | */ |
| | | public class FamilyAssetsActivity extends DLBaseActivity<ActivityFamilyAssetsBinding,FamilyAssetsActivityViewModel> { |
| | | |
| | | |
| | | private FamilyAssetsRvAdapter adapter; |
| | | private PopupWindow mOperatePopupWindow; |
| | | |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_family_assets; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | adapter = new FamilyAssetsRvAdapter(this); |
| | | LinearItemDecoration itemDecoration = new LinearItemDecoration(); |
| | | itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); |
| | | itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); |
| | | itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); |
| | | binding.recyclerView.addItemDecoration(itemDecoration); |
| | | binding.recyclerView.setAdapter(adapter); |
| | | |
| | | mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> { |
| | | viewModel.sortDataList(0); |
| | | mOperatePopupWindow.dismiss(); |
| | | }); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> { |
| | | viewModel.sortDataList(1); |
| | | mOperatePopupWindow.dismiss(); |
| | | }); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | viewModel.getFamilyAssets(); |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getDataListLiveData().observe(this, familyAssetsBeans -> { |
| | | adapter.setData(familyAssetsBeans); |
| | | }); |
| | | } |
| | | private PopupWindow initPopUpWindow(View view){ |
| | | PopupWindow popupWindow = new PopupWindow(this); |
| | | // 设置布局文件 |
| | | popupWindow.setContentView(view); |
| | | // 为了避免部分机型不显示,需要重新设置一下宽高 |
| | | popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | // 设置pop透明效果 |
| | | popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000)); |
| | | // 设置pop出入动画 |
| | | popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add); |
| | | // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true |
| | | popupWindow.setFocusable(true); |
| | | // 设置pop可点击,为false点击事件无效,默认为true |
| | | popupWindow.setTouchable(true); |
| | | // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 |
| | | popupWindow.setOutsideTouchable(false); |
| | | return popupWindow; |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.MutableLiveData; |
| | | |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.android.app_base.base.StateViewEnum; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.http.ResultData; |
| | | import com.android.app_base.utils.RxUtils; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | import io.reactivex.Observer; |
| | | import io.reactivex.disposables.Disposable; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 19:41 |
| | | * @desc |
| | | */ |
| | | public class FamilyAssetsActivityViewModel extends BaseViewModel<DataRepository> { |
| | | |
| | | private MutableLiveData<List<FamilyAssetsBean>> checkListLiveData;//选中的数据 |
| | | private MutableLiveData<List<FamilyAssetsBean>> dataListLiveData;//所有数据 |
| | | |
| | | |
| | | public FamilyAssetsActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | | |
| | | @Override |
| | | protected DataRepository initModel() { |
| | | return DataRepository.getInstance(); |
| | | } |
| | | |
| | | |
| | | public void getFamilyAssets(){ |
| | | model.getFamilyAssets(new HashMap<>()) |
| | | .compose(RxUtils.schedulersTransformer()) |
| | | .subscribe(new Observer<ResultData<FamilyAssetsResponseBean>>() { |
| | | @Override |
| | | public void onSubscribe(Disposable d) { |
| | | addSubscribe(d); |
| | | } |
| | | |
| | | @Override |
| | | public void onNext(ResultData<FamilyAssetsResponseBean> data) { |
| | | if (data.getCode() == CODE_SUCCESS){ |
| | | if (data.getData().getData().isEmpty()){ |
| | | changeStateView(StateViewEnum.DATA_NULL); |
| | | }else { |
| | | changeStateView(StateViewEnum.HIDE); |
| | | dataListLiveData.postValue(data.getData().getData()); |
| | | } |
| | | }else { |
| | | messageLiveData.postValue(data.getMsg()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Throwable e) { |
| | | messageLiveData.postValue(e.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public void onComplete() { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public MutableLiveData<List<FamilyAssetsBean>> getCheckListLiveData() { |
| | | return checkListLiveData; |
| | | } |
| | | |
| | | public void setCheckListLiveData(MutableLiveData<List<FamilyAssetsBean>> checkListLiveData) { |
| | | this.checkListLiveData = checkListLiveData; |
| | | } |
| | | |
| | | public MutableLiveData<List<FamilyAssetsBean>> getDataListLiveData() { |
| | | if (dataListLiveData == null){ |
| | | dataListLiveData = new MutableLiveData<>(); |
| | | } |
| | | return dataListLiveData; |
| | | } |
| | | |
| | | public void setDataListLiveData(MutableLiveData<List<FamilyAssetsBean>> dataListLiveData) { |
| | | this.dataListLiveData = dataListLiveData; |
| | | } |
| | | |
| | | public void sortDataList(int type){ |
| | | List<FamilyAssetsBean> list = dataListLiveData.getValue(); |
| | | if (list == null || list.isEmpty()){ |
| | | return; |
| | | } |
| | | |
| | | list.sort(new Comparator<FamilyAssetsBean>() { |
| | | @Override |
| | | public int compare(FamilyAssetsBean o1, FamilyAssetsBean o2) { |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault()); |
| | | Date date1 = null; |
| | | Date date2 = null; |
| | | try { |
| | | date1 = format.parse(o1.getCreateTime()); |
| | | date2 = format.parse(o2.getCreateTime()); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | if (date1 != null && date2 != null) { |
| | | if (type == 0){ |
| | | return date2.compareTo(date1); |
| | | }else { |
| | | return date1.compareTo(date2); |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | }); |
| | | dataListLiveData.postValue(list); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.EditText; |
| | | |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.adapter.ImageRvAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.databinding.ActivityFamilyAssetsDetailBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 21:46 |
| | | * @desc |
| | | */ |
| | | public class FamilyAssetsDetailActivity extends DLBaseActivity<ActivityFamilyAssetsDetailBinding,FamilyAssetsDetailActivityViewModel> { |
| | | private ImageRvAdapter adapter; |
| | | |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_family_assets_detail; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | if (getIntent().hasExtra("bean")){ |
| | | viewModel.getBeanLiveData().setValue((FamilyAssetsBean) getIntent().getSerializableExtra("bean")); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | adapter = new ImageRvAdapter(this); |
| | | GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); |
| | | binding.rvImage.setLayoutManager(gridLayoutManager); |
| | | binding.rvImage.setNestedScrollingEnabled(false); |
| | | setIsEdited(false); |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getBeanLiveData().observe(this,bean -> { |
| | | if (bean!=null){ |
| | | if (getTitleBar() != null){ |
| | | getTitleBar().setTitle(bean.getHolder() + "的" + bean.getType()); |
| | | } |
| | | String url = bean.getUrl(); |
| | | if (url == null||url.isEmpty()){ |
| | | return; |
| | | } |
| | | List<String> list; |
| | | if (url.contains(",")){ |
| | | String[] split = url.split(","); |
| | | list = new ArrayList<>(Arrays.asList(split)); |
| | | }else { |
| | | list = new ArrayList<>(); |
| | | list.add(url); |
| | | } |
| | | adapter.setData(list); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public void setIsEdited(boolean isEdited){ |
| | | disableAllEditText(getContentView(),isEdited); |
| | | adapter.setIsEdited(isEdited); |
| | | } |
| | | public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) { |
| | | for (int i = 0; i < viewGroup.getChildCount(); i++) { |
| | | View child = viewGroup.getChildAt(i); |
| | | if (child instanceof ViewGroup) { |
| | | disableAllEditText((ViewGroup) child,isEdited); |
| | | } else if (child instanceof EditText) { |
| | | child.setEnabled(isEdited); |
| | | child.setFocusable(isEdited); |
| | | child.setFocusableInTouchMode(isEdited); |
| | | if (!isEdited){ |
| | | child.clearFocus(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.MutableLiveData; |
| | | |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.application.zhangshi_app_android.bean.CaptchaImageBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.03. 21:47 |
| | | * @desc |
| | | */ |
| | | public class FamilyAssetsDetailActivityViewModel extends BaseViewModel<DataRepository> { |
| | | private MutableLiveData<FamilyAssetsBean> beanLiveData; |
| | | |
| | | public MutableLiveData<FamilyAssetsBean> getBeanLiveData() { |
| | | if (beanLiveData == null){ |
| | | beanLiveData = new MutableLiveData<>(); |
| | | } |
| | | return beanLiveData; |
| | | } |
| | | |
| | | public void setBeanLiveData(MutableLiveData<FamilyAssetsBean> beanLiveData) { |
| | | this.beanLiveData = beanLiveData; |
| | | } |
| | | |
| | | public FamilyAssetsDetailActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | | |
| | | @Override |
| | | protected DataRepository initModel() { |
| | | return DataRepository.getInstance(); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | import androidx.annotation.IdRes; |
| | | import androidx.annotation.LayoutRes; |
| | | import androidx.appcompat.app.AlertDialog; |
| | | import androidx.databinding.DataBindingUtil; |
| | | import androidx.databinding.ViewDataBinding; |
| | | import androidx.drawerlayout.widget.DrawerLayout; |
| | | import androidx.lifecycle.Observer; |
| | | |
| | |
| | | import com.application.zhangshi_app_android.adapter.FamilyMemorabiliaRvAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.databinding.ActivityFamilyMemorabiliaBinding; |
| | | import com.application.zhangshi_app_android.databinding.PopSearchBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | import com.hjq.bar.TitleBar; |
| | | |
| | | import java.util.List; |
| | | |
| | |
| | | * @date 2023.03.18. 10:00 |
| | | * @desc 家大事记 Activity |
| | | */ |
| | | public class FamilyMemorabiliaActivity extends BaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> { |
| | | public class FamilyMemorabiliaActivity extends DLBaseActivity<ActivityFamilyMemorabiliaBinding,FamilyMemorabiliaActivityViewModel> { |
| | | |
| | | FamilyMemorabiliaRvAdapter adapter; |
| | | private PopupWindow mOperatePopupWindow; |
| | | private PopupWindow mSearchPopupWindow; |
| | | private int operateType = 0; |
| | | private int searchType = 0; |
| | | private PopSearchBinding mSearchPopBinding; |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | |
| | | binding.recyclerView.addItemDecoration(itemDecoration); |
| | | binding.recyclerView.setAdapter(adapter); |
| | | |
| | | mSearchPopBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.pop_search, null, false); |
| | | mSearchPopBinding.setViewModel(viewModel); |
| | | mSearchPopupWindow = initPopUpWindow(mSearchPopBinding.getRoot()); |
| | | |
| | | mOperatePopupWindow = initPopUpWindow(R.layout.pop_operate); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_add).setOnClickListener(v -> { |
| | | AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); |
| | | mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); |
| | | |
| | | binding.ivSearchDefault.setOnClickListener(v -> { |
| | | binding.layoutSearch.setVisibility(View.VISIBLE); |
| | | binding.layoutDefault.setVisibility(View.GONE); |
| | | }); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_select).setOnClickListener(v -> { |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | operateType = 1; |
| | | adapter.setCheckable(true); |
| | | mOperatePopupWindow.dismiss(); |
| | | |
| | | binding.ivSearchType.setOnClickListener(v -> { |
| | | mSearchPopupWindow.setWidth(binding.layoutSearch.getMeasuredWidth()); |
| | | mSearchPopupWindow.showAsDropDown(binding.layoutSearch,0,0); |
| | | }); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> { |
| | | viewModel.changeOrder(true); |
| | | mOperatePopupWindow.dismiss(); |
| | | |
| | | binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { |
| | | @Override |
| | | public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { |
| | | if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH) |
| | | && event != null) { |
| | | viewModel.getFamilyMemorabilia(); |
| | | binding.layoutSearch.setVisibility(View.GONE); |
| | | binding.layoutDefault.setVisibility(View.VISIBLE); |
| | | binding.tvTitle.setText("搜索结果"); |
| | | hideSoftKeyboard(); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | }); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> { |
| | | viewModel.changeOrder(false); |
| | | mOperatePopupWindow.dismiss(); |
| | | binding.ivSearch.setOnClickListener(v -> { |
| | | viewModel.getFamilyMemorabilia(); |
| | | binding.layoutSearch.setVisibility(View.GONE); |
| | | binding.layoutDefault.setVisibility(View.VISIBLE); |
| | | binding.tvTitle.setText("搜索结果"); |
| | | mSearchPopupWindow.dismiss(); |
| | | hideSoftKeyboard(); |
| | | }); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | if (operateType == 0){ |
| | | mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | } else if (operateType == 1) { |
| | | binding.fabAdd.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); |
| | | } |
| | | }); |
| | | |
| | | setOnClickListener( |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_person), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_place), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_time), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.iv_clear_title), |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_add), |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_select), |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old), |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new) |
| | | ); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | viewModel.getFamilyMemorabilia(); |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { |
| | | @Override |
| | | public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { |
| | | if (viewModel.getOperateTypeLiveData().getValue() == 0){ |
| | | return; |
| | | } |
| | | if (familyMemorabiliaBeans.isEmpty()){ |
| | | viewModel.getOperateTypeLiveData().postValue(1); |
| | | }else{ |
| | | viewModel.getOperateTypeLiveData().postValue(2); |
| | | } |
| | | } |
| | | }); |
| | | viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { |
| | | @Override |
| | | public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { |
| | | adapter.setData(familyMemorabiliaBeans); |
| | | } |
| | | }); |
| | | viewModel.getOperateTypeLiveData().observe(this, integer -> { |
| | | if (integer == 0){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); |
| | | operateType = 0; |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }); |
| | | adapter.setCheckable(false); |
| | | } else { |
| | | }else if (integer == 1){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | viewModel.getOperateTypeLiveData().postValue(0); |
| | | }); |
| | | adapter.setCheckable(true); |
| | | }else if (integer == 2){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); |
| | | new UIDialog.Builder(this) |
| | | .setTitle("您确定要删除项目吗") |
| | | .setContent("项目删除后将无法恢复") |
| | |
| | | } |
| | | }) |
| | | .show(); |
| | | } |
| | | }); |
| | | |
| | | mSearchPopupWindow = initPopUpWindow(R.layout.pop_search); |
| | | binding.ivSearchType.setOnClickListener(v -> { |
| | | mSearchPopupWindow.showAsDropDown(binding.etSearch,0,0); |
| | | }); |
| | | binding.ivSearchDefault.setOnClickListener(v -> { |
| | | binding.layoutSearch.setVisibility(View.VISIBLE); |
| | | binding.layoutDefault.setVisibility(View.GONE); |
| | | }); |
| | | binding.fabAdd.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | AppManager.getAppManager().startActivity(new Intent(getSelfActivity(),CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); |
| | | } |
| | | }); |
| | | |
| | | setOnClickListener( |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_global_search), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_in_family_memorabilia), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_title), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_people), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_time), |
| | | mSearchPopupWindow.getContentView().findViewById(R.id.tv_search_by_place)); |
| | | |
| | | |
| | | binding.etSearch.setOnEditorActionListener(new TextView.OnEditorActionListener() { |
| | | @Override |
| | | public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { |
| | | if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED || actionId == EditorInfo.IME_ACTION_SEARCH) |
| | | && event != null) { |
| | | viewModel.getFamilyMemorabilia(searchType); |
| | | hideSoftKeyboard(); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | }); |
| | | |
| | | binding.ivMenu.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | binding.drawerLayout.open(); |
| | | } |
| | | }); |
| | | binding.drawerLayout.setScrimColor(getResources().getColor(R.color.color_shadow)); |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | viewModel.getFamilyMemorabilia(searchType); |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getCheckListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { |
| | | @Override |
| | | public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { |
| | | if (operateType == 0){ |
| | | return; |
| | | } |
| | | if (familyMemorabiliaBeans.isEmpty()){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | operateType = 1; |
| | | }else{ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_delete_white); |
| | | operateType = 2; |
| | | } |
| | | } |
| | | }); |
| | | viewModel.getDataListLiveData().observe(this, new Observer<List<FamilyMemorabiliaBean>>() { |
| | | @Override |
| | | public void onChanged(List<FamilyMemorabiliaBean> familyMemorabiliaBeans) { |
| | | adapter.setData(familyMemorabiliaBeans); |
| | | adapter.setCheckable(true); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | private PopupWindow initPopUpWindow(@LayoutRes int layoutId){ |
| | | private PopupWindow initPopUpWindow(View view){ |
| | | PopupWindow popupWindow = new PopupWindow(this); |
| | | // 设置布局文件 |
| | | popupWindow.setContentView(LayoutInflater.from(this).inflate(layoutId, null)); |
| | | popupWindow.setContentView(view); |
| | | // 为了避免部分机型不显示,需要重新设置一下宽高 |
| | | popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | |
| | | // 设置pop可点击,为false点击事件无效,默认为true |
| | | popupWindow.setTouchable(true); |
| | | // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 |
| | | popupWindow.setOutsideTouchable(true); |
| | | popupWindow.setOutsideTouchable(false); |
| | | return popupWindow; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | protected void hide() { |
| | | super.hide(); |
| | | binding.layoutDataNull.setVisibility(View.GONE); |
| | | binding.recyclerView.setVisibility(View.VISIBLE); |
| | | } |
| | | |
| | | @Override |
| | | public void onClick(View v) { |
| | | int id = v.getId(); |
| | | if (id == R.id.tv_global_search){ |
| | | searchType = 0; |
| | | binding.etSearch.setHint("全局搜索"); |
| | | mSearchPopupWindow.dismiss(); |
| | | }else if (id == R.id.tv_search_in_family_memorabilia) { |
| | | searchType = 1; |
| | | mSearchPopupWindow.dismiss(); |
| | | binding.etSearch.setHint("在“家大事记”内搜索"); |
| | | }else if (id == R.id.tv_search_by_title) { |
| | | searchType = 2; |
| | | mSearchPopupWindow.dismiss(); |
| | | binding.etSearch.setHint("按“大事记标题”搜索"); |
| | | }else if (id == R.id.tv_search_by_people) { |
| | | searchType = 3; |
| | | mSearchPopupWindow.dismiss(); |
| | | binding.etSearch.setHint("按“人物”搜索"); |
| | | }else if (id == R.id.tv_search_by_time) { |
| | | searchType = 4; |
| | | mSearchPopupWindow.dismiss(); |
| | | binding.etSearch.setHint("按“时间”搜索"); |
| | | }else if (id == R.id.tv_search_by_place) { |
| | | searchType = 5; |
| | | mSearchPopupWindow.dismiss(); |
| | | binding.etSearch.setHint("按“地点”搜索"); |
| | | if (id == R.id.tv_add){ |
| | | AppManager.getAppManager().startActivity(new Intent(this,CreateFamilyProjectActivity.class).putExtra(BaseConfig.EXTRA_TYPE,1)); |
| | | }else if (id == R.id.tv_select){ |
| | | viewModel.getOperateTypeLiveData().postValue(1); |
| | | mOperatePopupWindow.dismiss(); |
| | | } else if (id == R.id.tv_from_new_to_old) { |
| | | viewModel.changeOrder(true); |
| | | mOperatePopupWindow.dismiss(); |
| | | } else if (id == R.id.tv_from_old_to_new) { |
| | | viewModel.changeOrder(false); |
| | | mOperatePopupWindow.dismiss(); |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.http.ResultData; |
| | | import com.android.app_base.utils.RxUtils; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaRequestBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaResponseBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | */ |
| | | public class FamilyMemorabiliaActivityViewModel extends BaseViewModel<DataRepository> { |
| | | |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData; |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData; |
| | | private MutableLiveData<String> stringMutableLiveData; |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> checkListLiveData;//选中的数据 |
| | | private MutableLiveData<List<FamilyMemorabiliaBean>> dataListLiveData;//所有数据 |
| | | private MutableLiveData<Integer> operateTypeLiveData;//操作类型 0 选择操作 1.完成 2.删除 |
| | | |
| | | private MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData; |
| | | public FamilyMemorabiliaActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | |
| | | /** |
| | | * 获取家大事记 |
| | | */ |
| | | public void getFamilyMemorabilia(int searchType) { |
| | | Map<String, Object> queryMap = new HashMap<>(); |
| | | queryMap.put("pageNum",1); |
| | | queryMap.put("pageSize",20); |
| | | if (searchType == 1){ |
| | | queryMap.put("remark",stringMutableLiveData.getValue()); |
| | | } else if (searchType == 2) { |
| | | queryMap.put("title",stringMutableLiveData.getValue()); |
| | | }else if (searchType == 3) { |
| | | queryMap.put("people",stringMutableLiveData.getValue()); |
| | | public void getFamilyMemorabilia() { |
| | | if (getRequestBeanMutableLiveData().getValue() == null){ |
| | | getRequestBeanMutableLiveData().setValue(new FamilyMemorabiliaRequestBean()); |
| | | } |
| | | else if (searchType == 4) { |
| | | queryMap.put("createTime",stringMutableLiveData.getValue()); |
| | | } |
| | | else if (searchType == 5) { |
| | | queryMap.put("address",stringMutableLiveData.getValue()); |
| | | } |
| | | model.getFamilyMemorabilia(queryMap) |
| | | model.getFamilyMemorabilia(getRequestBeanMutableLiveData().getValue().getMap()) |
| | | .compose(RxUtils.schedulersTransformer()) |
| | | .subscribe(new Observer<ResultData<FamilyMemorabiliaResponseBean>>() { |
| | | @Override |
| | |
| | | if (data.getData().getData().isEmpty()){ |
| | | changeStateView(StateViewEnum.DATA_NULL); |
| | | }else { |
| | | changeStateView(StateViewEnum.HIDE); |
| | | dataListLiveData.postValue(data.getData().getData()); |
| | | } |
| | | }else { |
| | |
| | | this.dataListLiveData = dataListLiveData; |
| | | } |
| | | |
| | | public MutableLiveData<String> getStringMutableLiveData() { |
| | | if (stringMutableLiveData == null){ |
| | | stringMutableLiveData = new MutableLiveData<>(); |
| | | @NonNull |
| | | public MutableLiveData<FamilyMemorabiliaRequestBean> getRequestBeanMutableLiveData() { |
| | | if (requestBeanMutableLiveData == null){ |
| | | requestBeanMutableLiveData = new MutableLiveData<>(); |
| | | } |
| | | return stringMutableLiveData; |
| | | if (requestBeanMutableLiveData.getValue()==null){ |
| | | requestBeanMutableLiveData.postValue(new FamilyMemorabiliaRequestBean()); |
| | | } |
| | | return requestBeanMutableLiveData; |
| | | } |
| | | |
| | | public void setStringMutableLiveData(MutableLiveData<String> stringMutableLiveData) { |
| | | this.stringMutableLiveData = stringMutableLiveData; |
| | | public void setRequestBeanMutableLiveData(MutableLiveData<FamilyMemorabiliaRequestBean> requestBeanMutableLiveData) { |
| | | this.requestBeanMutableLiveData = requestBeanMutableLiveData; |
| | | } |
| | | |
| | | public MutableLiveData<Integer> getOperateTypeLiveData() { |
| | | if (operateTypeLiveData == null){ |
| | | operateTypeLiveData = new MutableLiveData<>(); |
| | | operateTypeLiveData.setValue(0); |
| | | } |
| | | return operateTypeLiveData; |
| | | } |
| | | |
| | | public void setOperateTypeLiveData(MutableLiveData<Integer> operateTypeLiveData) { |
| | | this.operateTypeLiveData = operateTypeLiveData; |
| | | } |
| | | |
| | | public void changeOrder(boolean b) { |
| | | List<FamilyMemorabiliaBean> dataList = getDataListLiveData().getValue(); |
| | | if (dataList == null) return; |
| | | if (b){ |
| | | dataList.sort(new Comparator<FamilyMemorabiliaBean>() { |
| | | @Override |
| | | public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) { |
| | | return (int) (o1.getId() - o2.getId()); |
| | | } |
| | | }); |
| | | }else { |
| | | dataList.sort(new Comparator<FamilyMemorabiliaBean>() { |
| | | @Override |
| | | public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) { |
| | | return (int) (o2.getId() - o1.getId()); |
| | | } |
| | | }); |
| | | List<FamilyMemorabiliaBean> list = getDataListLiveData().getValue(); |
| | | if (list == null || list.isEmpty()){ |
| | | return; |
| | | } |
| | | getDataListLiveData().postValue(dataList); |
| | | list.sort(new Comparator<FamilyMemorabiliaBean>() { |
| | | @Override |
| | | public int compare(FamilyMemorabiliaBean o1, FamilyMemorabiliaBean o2) { |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault()); |
| | | Date date1 = null; |
| | | Date date2 = null; |
| | | try { |
| | | date1 = format.parse(o1.getCreateTime()); |
| | | date2 = format.parse(o2.getCreateTime()); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | if (date1 != null && date2 != null) { |
| | | if (b){ |
| | | return date2.compareTo(date1); |
| | | }else { |
| | | return date1.compareTo(date2); |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | }); |
| | | getDataListLiveData().postValue(list); |
| | | } |
| | | } |
| | |
| | | AppManager.getAppManager().startActivity(FamilyMemorabiliaActivity.class); |
| | | } |
| | | }); |
| | | binding.layoutGrowingUp.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | AppManager.getAppManager().startActivity(GrowthExperienceActivity.class); |
| | | } |
| | | }); |
| | | binding.layoutFamilyAssets.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | AppManager.getAppManager().startActivity(FamilyAssetsActivity.class); |
| | | } |
| | | }); |
| | | binding.layoutHomeDevices.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | AppManager.getAppManager().startActivity(HomeDevicesActivity.class); |
| | | } |
| | | }); |
| | | binding.layoutGrowingUp.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | AppManager.getAppManager().startActivity(GrowthExperienceActivity.class); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | |
| | | import android.graphics.drawable.ColorDrawable; |
| | | import android.os.Bundle; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.PopupWindow; |
| | | |
| | | import androidx.annotation.Nullable; |
| | | |
| | | import com.android.app_base.base.BaseConfig; |
| | | import com.android.app_base.base.dialog.BaseDialog; |
| | | import com.android.app_base.base.dialog.UIDialog; |
| | | import com.android.app_base.base.view.BaseActivity; |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.bean.FamilyMemorabiliaBean; |
| | | import com.application.zhangshi_app_android.databinding.ItemFamilyCreateBinding; |
| | | import com.application.zhangshi_app_android.databinding.ActivityGrowthExperienceBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | |
| | | /** |
| | | * @author Gss |
| | | * @date 2023.03.31. 16:00 |
| | | * @desc 成长经历 GrowthExperienceActivity |
| | | */ |
| | | public class GrowthExperienceActivity { |
| | | public class GrowthExperienceActivity extends BaseActivity<GrowthExperienceActivityBinding,GrowthExperienceActivityViewModel> { |
| | | private int type; |
| | | private int operateType; |
| | | private PopupWindow popupWindow; |
| | | public class GrowthExperienceActivity extends DLBaseActivity<ActivityGrowthExperienceBinding,GrowthExperienceActivityViewModel> { |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_growth_experience; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_growth_experience; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | type = getIntent().getIntExtra(BaseConfig.EXTRA_TYPE,0); |
| | | if (type == 0){ |
| | | GrowthExperienceBean bean = (GrowthExperienceBean) getIntent().getSerializableExtra("bean"); |
| | | if (bean!=null){ |
| | | viewModel.getBeanMutableLiveData().postValue(bean); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | if (type == 1){ |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | viewModel.add(); |
| | | }); |
| | | }else { |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate); |
| | | popupWindow = new PopupWindow(this); |
| | | // 设置布局文件 |
| | | popupWindow.setContentView(LayoutInflater.from(this).inflate(R.layout.pop_operate_delete, null)); |
| | | // 为了避免部分机型不显示,需要重新设置一下宽高 |
| | | popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | // 设置pop透明效果 |
| | | popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000)); |
| | | // 设置pop出入动画 |
| | | popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add); |
| | | // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true |
| | | popupWindow.setFocusable(true); |
| | | // 设置pop可点击,为false点击事件无效,默认为true |
| | | popupWindow.setTouchable(true); |
| | | // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 |
| | | popupWindow.setOutsideTouchable(true); |
| | | |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | if (operateType == 0){ |
| | | popupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }else{ |
| | | viewModel.update(); |
| | | } |
| | | }); |
| | | popupWindow.getContentView().findViewById(R.id.tv_modify).setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | binding.ivOperate.setBackgroundResource(R.drawable.ic_operate_finish); |
| | | operateType = 1; |
| | | popupWindow.dismiss(); |
| | | } |
| | | }); |
| | | popupWindow.getContentView().findViewById(R.id.tv_delete).setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | popupWindow.dismiss(); |
| | | new UIDialog.Builder(getSelfActivity()) |
| | | .setTitle("您确定要删除项目吗") |
| | | .setContent("项目删除后将无法恢复") |
| | | .setConfirm("确定") |
| | | .setCancel("取消") |
| | | .setListener(new UIDialog.OnListener() { |
| | | @Override |
| | | public void onConfirm(BaseDialog dialog) { |
| | | viewModel.delete(); |
| | | } |
| | | }) |
| | | .show(); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | * @desc 成长经历 viewModel |
| | | */ |
| | | public class GrowthExperienceActivityViewModel extends BaseViewModel<DataRepository> { |
| | | private MutableLiveData<GrowthExperienceBean> beanMutableLiveData; |
| | | private MutableLiveData<List<GrowthExperienceBean>> checkListLiveData; |
| | | private MutableLiveData<List<GrowthExperienceBean>> dataListLiveData; |
| | | private MutableLiveData<String> stringMutableLiveData; |
| | | |
| | | |
| | | |
| | | |
| | | public GrowthExperienceActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | |
| | | return DataRepository.getInstance(); |
| | | } |
| | | |
| | | @Override |
| | | public void onCreate(@NonNull LifecycleOwner owner) { |
| | | super.onCreate(owner); |
| | | GrowthExperienceActivityViewModel viewModel=new ViewModelProvider(this).get(GrowthExperienceActivityViewModel.class); |
| | | DataBindingUtil.setContentView(this, R.layout.activity_growth_experience).setViewModel(viewModel); |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.graphics.drawable.ColorDrawable; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.PopupWindow; |
| | | |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.android.app_base.widget.LinearItemDecoration; |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.adapter.FamilyAssetsRvAdapter; |
| | | import com.application.zhangshi_app_android.adapter.HomeDevicesRvAdapter; |
| | | import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 0:00 |
| | | * @desc 家庭设备 |
| | | */ |
| | | public class HomeDevicesActivity extends DLBaseActivity<ActivityHomeDevicesBinding,HomeDevicesActivityViewModel> { |
| | | |
| | | private HomeDevicesRvAdapter adapter; |
| | | private PopupWindow mOperatePopupWindow; |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_home_devices; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | adapter = new HomeDevicesRvAdapter(this); |
| | | LinearItemDecoration itemDecoration = new LinearItemDecoration(); |
| | | itemDecoration.setBottomSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_12)); |
| | | itemDecoration.setHorizontalSpace((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); |
| | | itemDecoration.setFirstTop((int) getResources().getDimension(com.android.app_base.R.dimen.dp_20)); |
| | | binding.recyclerView.addItemDecoration(itemDecoration); |
| | | binding.recyclerView.setAdapter(adapter); |
| | | |
| | | mOperatePopupWindow = initPopUpWindow(View.inflate(this,R.layout.pop_operate,null)); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.layout_add).setVisibility(View.GONE); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.layout_select).setVisibility(View.GONE); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_new_to_old).setOnClickListener(v -> { |
| | | viewModel.sortDataList(0); |
| | | mOperatePopupWindow.dismiss(); |
| | | }); |
| | | mOperatePopupWindow.getContentView().findViewById(R.id.tv_from_old_to_new).setOnClickListener(v -> { |
| | | viewModel.sortDataList(1); |
| | | mOperatePopupWindow.dismiss(); |
| | | }); |
| | | binding.ivOperate.setOnClickListener(v -> { |
| | | mOperatePopupWindow.showAsDropDown(binding.ivOperate,-ScreenSizeUtils.dip2px(this,85) +binding.ivOperate.getWidth(),0); |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | viewModel.getHomeDevices(); |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getDataListLiveData().observe(this, homeDevices -> { |
| | | adapter.setData(homeDevices); |
| | | }); |
| | | } |
| | | private PopupWindow initPopUpWindow(View view){ |
| | | PopupWindow popupWindow = new PopupWindow(this); |
| | | // 设置布局文件 |
| | | popupWindow.setContentView(view); |
| | | // 为了避免部分机型不显示,需要重新设置一下宽高 |
| | | popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); |
| | | // 设置pop透明效果 |
| | | popupWindow.setBackgroundDrawable(new ColorDrawable(0x0000)); |
| | | // 设置pop出入动画 |
| | | popupWindow.setAnimationStyle(com.android.app_base.R.style.pop_add); |
| | | // 设置pop获取焦点,如果为false点击返回按钮会退出当前Activity,如果pop中有Editor的话,focusable必须要为true |
| | | popupWindow.setFocusable(true); |
| | | // 设置pop可点击,为false点击事件无效,默认为true |
| | | popupWindow.setTouchable(true); |
| | | // 设置点击pop外侧消失,默认为false;在focusable为true时点击外侧始终消失 |
| | | popupWindow.setOutsideTouchable(false); |
| | | return popupWindow; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import static com.android.app_base.base.BaseConfig.CODE_SUCCESS; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.LiveData; |
| | | import androidx.lifecycle.MutableLiveData; |
| | | |
| | | import com.android.app_base.base.StateViewEnum; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.http.ResultData; |
| | | import com.android.app_base.utils.RxUtils; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsResponseBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesResponseBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | import io.reactivex.Observer; |
| | | import io.reactivex.disposables.Disposable; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 0:01 |
| | | * @desc 家庭设备 ViewModel |
| | | */ |
| | | public class HomeDevicesActivityViewModel extends BaseViewModel<DataRepository> { |
| | | private MutableLiveData<List<HomeDevicesBean>> dataListLiveData;//数据 |
| | | |
| | | |
| | | public HomeDevicesActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | | |
| | | @Override |
| | | protected DataRepository initModel() { |
| | | return DataRepository.getInstance(); |
| | | } |
| | | |
| | | public void getHomeDevices(){ |
| | | List<HomeDevicesBean> list = new ArrayList<>(); |
| | | list.add(new HomeDevicesBean(1,"电视","2023-04-03","张三","夏普液晶电视","客厅","4k超高清","")); |
| | | list.add(new HomeDevicesBean(1,"电视","2023-04-02","张三","夏普液晶电视","客厅","4k超高清","")); |
| | | list.add(new HomeDevicesBean(1,"电视","2023-04-01","张三","夏普液晶电视","客厅","4k超高清","")); |
| | | if (list != null && !list.isEmpty()){ |
| | | dataListLiveData.postValue(list); |
| | | return; |
| | | } |
| | | model.getHomeDevices(new HashMap<>()) |
| | | .compose(RxUtils.schedulersTransformer()) |
| | | .subscribe(new Observer<ResultData<HomeDevicesResponseBean>>() { |
| | | @Override |
| | | public void onSubscribe(Disposable d) { |
| | | addSubscribe(d); |
| | | } |
| | | |
| | | @Override |
| | | public void onNext(ResultData<HomeDevicesResponseBean> data) { |
| | | if (data.getCode() == CODE_SUCCESS){ |
| | | if (data.getData().getData().isEmpty()){ |
| | | changeStateView(StateViewEnum.DATA_NULL); |
| | | }else { |
| | | changeStateView(StateViewEnum.HIDE); |
| | | dataListLiveData.postValue(data.getData().getData()); |
| | | } |
| | | }else { |
| | | messageLiveData.postValue(data.getMsg()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Throwable e) { |
| | | messageLiveData.postValue(e.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public void onComplete() { |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public MutableLiveData<List<HomeDevicesBean>> getDataListLiveData() { |
| | | if (dataListLiveData == null){ |
| | | dataListLiveData = new MutableLiveData<>(); |
| | | } |
| | | return dataListLiveData; |
| | | } |
| | | |
| | | public void setDataListLiveData(MutableLiveData<List<HomeDevicesBean>> dataListLiveData) { |
| | | this.dataListLiveData = dataListLiveData; |
| | | } |
| | | |
| | | /** |
| | | * 按时间排序 |
| | | * @param type 0 从新到旧 1 从旧到新 |
| | | */ |
| | | public void sortDataList(int type){ |
| | | List<HomeDevicesBean> list = dataListLiveData.getValue(); |
| | | if (list == null || list.isEmpty()){ |
| | | return; |
| | | } |
| | | |
| | | list.sort(new Comparator<HomeDevicesBean>() { |
| | | @Override |
| | | public int compare(HomeDevicesBean o1, HomeDevicesBean o2) { |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", java.util.Locale.getDefault()); |
| | | Date date1 = null; |
| | | Date date2 = null; |
| | | try { |
| | | date1 = format.parse(o1.getCreateTime()); |
| | | date2 = format.parse(o2.getCreateTime()); |
| | | } catch (ParseException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | if (date1 != null && date2 != null) { |
| | | if (type == 0){ |
| | | return date2.compareTo(date1); |
| | | }else { |
| | | return date1.compareTo(date2); |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | }); |
| | | dataListLiveData.postValue(list); |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.EditText; |
| | | |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.adapter.ImageRvAdapter; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesBean; |
| | | import com.application.zhangshi_app_android.databinding.ActivityHomeDevicesDetailBinding; |
| | | import com.application.zhangshi_app_android.ui.DLBaseActivity; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 15:19 |
| | | * @desc |
| | | */ |
| | | public class HomeDevicesDetailActivity extends DLBaseActivity<ActivityHomeDevicesDetailBinding,HomeDevicesDetailActivityViewModel> { |
| | | |
| | | private ImageRvAdapter adapter; |
| | | |
| | | @Override |
| | | public int getLayoutId() { |
| | | return R.layout.activity_home_devices_detail; |
| | | } |
| | | |
| | | @Override |
| | | public int getVariableId() { |
| | | return BR.viewModel; |
| | | } |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | if (getIntent().hasExtra("bean")){ |
| | | viewModel.getBeanLiveData().setValue((HomeDevicesBean) getIntent().getSerializableExtra("bean")); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void initView() { |
| | | adapter = new ImageRvAdapter(this); |
| | | GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 3); |
| | | binding.rvImage.setLayoutManager(gridLayoutManager); |
| | | binding.rvImage.setNestedScrollingEnabled(false); |
| | | setIsEdited(false); |
| | | } |
| | | |
| | | @Override |
| | | public void initData() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void initLiveDataObserve() { |
| | | viewModel.getBeanLiveData().observe(this,bean -> { |
| | | if (bean!=null){ |
| | | if (getTitleBar() != null){ |
| | | getTitleBar().setTitle(bean.getName()); |
| | | } |
| | | String url = bean.getUrl(); |
| | | if (url == null||url.isEmpty()){ |
| | | return; |
| | | } |
| | | List<String> list; |
| | | if (url.contains(",")){ |
| | | String[] split = url.split(","); |
| | | list = new ArrayList<>(Arrays.asList(split)); |
| | | }else { |
| | | list = new ArrayList<>(); |
| | | list.add(url); |
| | | } |
| | | adapter.setData(list); |
| | | } |
| | | }); |
| | | } |
| | | public void setIsEdited(boolean isEdited){ |
| | | disableAllEditText(getContentView(),isEdited); |
| | | adapter.setIsEdited(isEdited); |
| | | } |
| | | public void disableAllEditText(ViewGroup viewGroup, boolean isEdited) { |
| | | for (int i = 0; i < viewGroup.getChildCount(); i++) { |
| | | View child = viewGroup.getChildAt(i); |
| | | if (child instanceof ViewGroup) { |
| | | disableAllEditText((ViewGroup) child,isEdited); |
| | | } else if (child instanceof EditText) { |
| | | child.setEnabled(isEdited); |
| | | child.setFocusable(isEdited); |
| | | child.setFocusableInTouchMode(isEdited); |
| | | if (!isEdited){ |
| | | child.clearFocus(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.application.zhangshi_app_android.ui.function; |
| | | |
| | | import android.app.Application; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.lifecycle.MutableLiveData; |
| | | |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.application.zhangshi_app_android.bean.FamilyAssetsBean; |
| | | import com.application.zhangshi_app_android.bean.HomeDevicesBean; |
| | | import com.application.zhangshi_app_android.data.DataRepository; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.04. 15:35 |
| | | * @desc 家庭设备详情 ViewModel |
| | | */ |
| | | public class HomeDevicesDetailActivityViewModel extends BaseViewModel<DataRepository> { |
| | | private MutableLiveData<HomeDevicesBean> beanLiveData; |
| | | |
| | | |
| | | public HomeDevicesDetailActivityViewModel(@NonNull Application application) { |
| | | super(application); |
| | | } |
| | | |
| | | @Override |
| | | protected DataRepository initModel() { |
| | | return DataRepository.getInstance(); |
| | | } |
| | | |
| | | public MutableLiveData<HomeDevicesBean> getBeanLiveData() { |
| | | if (beanLiveData == null){ |
| | | beanLiveData = new MutableLiveData<>(); |
| | | } |
| | | return beanLiveData; |
| | | } |
| | | |
| | | public void setBeanLiveData(MutableLiveData<HomeDevicesBean> beanLiveData) { |
| | | this.beanLiveData = beanLiveData; |
| | | } |
| | | } |
| | |
| | | |
| | | import static com.android.app_base.base.BaseConfig.EXTRA_TYPE; |
| | | |
| | | import android.Manifest; |
| | | import android.content.Intent; |
| | | import android.view.View; |
| | | |
| | |
| | | import com.android.app_base.base.view.BaseActivity; |
| | | import com.android.app_base.manager.AppManager; |
| | | import com.android.app_base.manager.UserManager; |
| | | import com.android.app_base.utils.ToastUtils; |
| | | import com.application.zhangshi_app_android.BR; |
| | | import com.application.zhangshi_app_android.R; |
| | | import com.application.zhangshi_app_android.databinding.ActivityLoginBinding; |
| | | import com.application.zhangshi_app_android.ui.main.MainActivity; |
| | | import com.blankj.utilcode.util.PermissionUtils; |
| | | import com.gyf.immersionbar.ImmersionBar; |
| | | |
| | | /** |
| | |
| | | |
| | | @Override |
| | | public void initParam() { |
| | | System.out.println("token"+UserManager.getInstance().getToken()); |
| | | if (!UserManager.getInstance().getToken().isEmpty()){ |
| | | AppManager.getAppManager().startActivity(MainActivity.class); |
| | | finish(); |
| | |
| | | <item |
| | | android:state_checked="true" |
| | | android:drawable="@drawable/ic_checked" /> |
| | | <!-- <item--> |
| | | <!-- android:state_checked="false"--> |
| | | <!-- android:drawable="@null" />--> |
| | | <!-- <item--> |
| | | <!-- android:drawable="@null" /><!– The default one –>--> |
| | | <item |
| | | android:state_checked="false" |
| | | android:drawable="@drawable/ic_unchecked" /> |
| | | <item |
| | | android:drawable="@drawable/ic_unchecked" /><!-- The default one --> |
| | | </selector> |
| | |
| | | <shape xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:shape="rectangle"> |
| | | <solid android:color="#73fab4cd" /> |
| | | <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomLeftRadius="10dp" android:bottomRightRadius="10dp" /> |
| | | <solid android:color="#73FAB4CD" /> |
| | | <corners android:radius="10dp" /> |
| | | |
| | | </shape> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.FamilyAssetsActivityViewModel" /> |
| | | </data> |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:id="@+id/titleBar" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | > |
| | | <FrameLayout |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:layout_gravity="center_vertical|end" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_operate" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center" |
| | | android:background="@drawable/ic_operate" |
| | | /> |
| | | </FrameLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_default" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_title" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="16dp" |
| | | android:text="家庭资产" |
| | | android:layout_weight="1" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_20" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_default" |
| | | android:layout_width="@dimen/dp_24" |
| | | android:layout_height="@dimen/dp_24" |
| | | android:background="@drawable/ic_search" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_search" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginVertical="4dp" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | android:background="@color/white" |
| | | android:paddingHorizontal="5dp" |
| | | android:visibility="gone" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_search" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_gray" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/et_search" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="5dp" |
| | | android:textSize="14sp" |
| | | android:textColor="#61000000" |
| | | android:background="@null" |
| | | android:imeOptions="actionSearch" |
| | | android:text="" |
| | | android:singleLine="true" |
| | | android:hint="在“家大事记内搜索”" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_type" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_by" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | </com.android.app_base.widget.ExtendTitleBar> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_data_null" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar"> |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/img_data_null" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="18dp" |
| | | android:text="暂时还没有数据哦~\n点击”+”立即创建" |
| | | android:textSize="14sp" |
| | | android:textColor="#73000000" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:background="@color/color_normal_background" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar" |
| | | app:layout_constraintVertical_bias="1.0" |
| | | tools:itemCount="20" |
| | | tools:layout_editor_absoluteX="-81dp" |
| | | tools:listitem="@layout/item_family_memorabilia" /> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | </layout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.FamilyAssetsDetailActivityViewModel" /> |
| | | </data> |
| | | |
| | | <LinearLayout |
| | | tools:context=".ui.function.CreateFamilyProjectActivity" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:title="哈哈哈" |
| | | app:titleGravity="left" |
| | | /> |
| | | <ScrollView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toBottomOf="@id/titleBar" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="类别" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | |
| | | |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="16sp" |
| | | android:text="@={viewModel.beanLiveData.type}" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="时间" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.createTime}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="证件卡号" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:text="@={viewModel.beanLiveData.title}" |
| | | android:textColor="#DE000000" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="开户行" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.location}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="持有人" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.holder}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="存放地点" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.address}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="备注" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.remark}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="电子文件" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <RelativeLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/shape_6b0000_stroke" |
| | | > |
| | | <com.android.app_base.widget.WrapRecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:orientation="vertical" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginBottom="10dp" |
| | | android:layout_marginTop="2sp" |
| | | android:paddingStart="10dp" |
| | | android:paddingEnd="5dp" |
| | | android:paddingVertical="10dp" |
| | | /> |
| | | |
| | | </RelativeLayout> |
| | | |
| | | |
| | | </LinearLayout> |
| | | </ScrollView> |
| | | |
| | | |
| | | </LinearLayout> |
| | | </layout> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | > |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel"/> |
| | | </data> |
| | | <androidx.drawerlayout.widget.DrawerLayout |
| | | android:id="@+id/drawerLayout" |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:openDrawer="start" |
| | | > |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:context=".ui.function.FamilyMemorabiliaActivity" |
| | | android:orientation="vertical"> |
| | | tools:context=".ui.function.FamilyMemorabiliaActivity" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.hjq.bar.TitleBar |
| | | android:id="@+id/titleBar" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="?attr/actionBarSize" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | android:paddingHorizontal="0dp" |
| | | android:background="@color/color_title_bar_background" |
| | | app:leftIcon="@null" |
| | | app:rightIcon="@null" |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:id="@+id/titleBar" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | > |
| | | <FrameLayout |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:layout_gravity="center_vertical|end" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_menu" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:background="@drawable/ic_menu" |
| | | android:layout_gravity="center_vertical" |
| | | /> |
| | | <FrameLayout |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:layout_gravity="center_vertical|end" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_operate" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center" |
| | | android:background="@drawable/ic_operate" |
| | | /> |
| | | </FrameLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_default" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="16dp" |
| | | android:text="家大事记" |
| | | android:layout_weight="1" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_20" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_default" |
| | | android:layout_width="@dimen/dp_24" |
| | | android:layout_height="@dimen/dp_24" |
| | | android:background="@drawable/ic_search" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_search" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginVertical="4dp" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | android:background="@color/white" |
| | | android:paddingHorizontal="5dp" |
| | | android:visibility="gone" |
| | | > |
| | | <ImageView |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_gray" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/et_search" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="5dp" |
| | | android:textSize="14sp" |
| | | android:textColor="#61000000" |
| | | android:background="@null" |
| | | android:imeOptions="actionSearch" |
| | | android:text="@={viewModel.stringMutableLiveData}" |
| | | android:singleLine="true" |
| | | android:hint="全局搜索" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_type" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_by" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | </com.hjq.bar.TitleBar> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_data_null" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar"> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_operate" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/img_sakura" |
| | | android:layout_gravity="center" |
| | | android:background="@drawable/ic_operate" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="18dp" |
| | | android:text="暂时还没有数据哦~\n点击”+”立即创建" |
| | | android:textSize="14sp" |
| | | android:textColor="#73000000" |
| | | /> |
| | | </LinearLayout> |
| | | </FrameLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:background="@color/color_normal_background" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar" |
| | | app:layout_constraintVertical_bias="1.0" |
| | | tools:itemCount="20" |
| | | tools:layout_editor_absoluteX="-81dp" |
| | | tools:listitem="@layout/item_family_memorabilia" /> |
| | | |
| | | <com.google.android.material.floatingactionbutton.FloatingActionButton |
| | | android:id="@+id/fab_add" |
| | | android:layout_width="@dimen/dp_56" |
| | | android:layout_height="@dimen/dp_56" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginEnd="@dimen/dp_25" |
| | | android:layout_marginBottom="@dimen/dp_44" |
| | | android:src="@drawable/ic_add" |
| | | app:fabCustomSize="@dimen/dp_56" |
| | | /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | <androidx.core.widget.NestedScrollView |
| | | android:layout_width="211dp" |
| | | android:layout_height="match_parent" |
| | | android:layout_gravity="start" |
| | | android:background="@color/color_card_pink" |
| | | android:paddingTop="25dp" |
| | | > |
| | | <LinearLayout |
| | | android:id="@+id/layout_default" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="12dp" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | <TextView |
| | | android:id="@+id/tv_title" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center_horizontal" |
| | | android:layout_marginTop="33dp" |
| | | android:layout_marginBottom="20dp" |
| | | android:gravity="center" |
| | | > |
| | | <androidx.constraintlayout.utils.widget.ImageFilterView |
| | | android:layout_width="50dp" |
| | | android:layout_height="50dp" |
| | | app:roundPercent="1" |
| | | android:background="@drawable/img_sakura" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="张喵" |
| | | android:textSize="18sp" |
| | | android:textColor="@color/black" |
| | | android:layout_marginStart="16dp" |
| | | /> |
| | | </LinearLayout> |
| | | <androidx.cardview.widget.CardView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="304dp" |
| | | app:cardBackgroundColor="@color/white" |
| | | app:cardCornerRadius="10dp" |
| | | app:cardElevation="0dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingVertical="8dp" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="核心板块" |
| | | android:textColor="@color/black" |
| | | android:textSize="12sp" |
| | | android:layout_marginStart="14dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:background="#FFF3F3F3" |
| | | /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_family_root_net" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家根网" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_notes" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家大事记" |
| | | android:textColor="#FFF6739F" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_pink" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_asset" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭资产" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_home_devices" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭设备" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_honor" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="收藏、荣誉" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_little_doctor" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="小医生" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_cleaning" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="保洁、收纳" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_mail_list" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="通讯录" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_pet" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="魅宠" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_income_expense" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭收支台账" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | <androidx.cardview.widget.CardView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="240dp" |
| | | app:cardBackgroundColor="@color/white" |
| | | app:cardCornerRadius="10dp" |
| | | app:cardElevation="0dp" |
| | | android:layout_marginTop="26dp" |
| | | android:layout_marginBottom="14dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="个人板块" |
| | | android:textColor="@color/black" |
| | | android:textSize="12sp" |
| | | android:layout_marginVertical="8dp" |
| | | android:layout_marginStart="14dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:background="#FFF3F3F3" |
| | | /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_growth" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="成长经历阅历" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_marriage" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="婚姻" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_property" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="财产" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_wish" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="百年心愿" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_tour" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="旅游" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_health" /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="健康保健" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_certificate" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="荣誉、证书奖项" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_privacy" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="隐私" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | android:layout_marginStart="16dp" |
| | | android:text="家大事记" |
| | | android:layout_weight="1" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_20" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_default" |
| | | android:layout_width="@dimen/dp_24" |
| | | android:layout_height="@dimen/dp_24" |
| | | android:background="@drawable/ic_search" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | </androidx.core.widget.NestedScrollView> |
| | | </androidx.drawerlayout.widget.DrawerLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_search" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginVertical="4dp" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | android:background="@color/white" |
| | | android:paddingHorizontal="5dp" |
| | | android:visibility="gone" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_search" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_gray" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/et_search" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="5dp" |
| | | android:textSize="14sp" |
| | | android:textColor="#61000000" |
| | | android:background="@null" |
| | | android:imeOptions="actionSearch" |
| | | android:text="" |
| | | android:singleLine="true" |
| | | android:hint="在“家大事记内搜索”" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_type" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_by" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | </com.android.app_base.widget.ExtendTitleBar> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_data_null" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar"> |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/img_data_null" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="18dp" |
| | | android:text="暂时还没有数据哦~\n点击”+”立即创建" |
| | | android:textSize="14sp" |
| | | android:textColor="#73000000" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:background="@color/color_normal_background" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar" |
| | | app:layout_constraintVertical_bias="1.0" |
| | | tools:itemCount="20" |
| | | tools:layout_editor_absoluteX="-81dp" |
| | | tools:listitem="@layout/item_family_memorabilia" /> |
| | | |
| | | <com.google.android.material.floatingactionbutton.FloatingActionButton |
| | | android:id="@+id/fab_add" |
| | | android:layout_width="@dimen/dp_56" |
| | | android:layout_height="@dimen/dp_56" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | android:layout_marginEnd="@dimen/dp_25" |
| | | android:layout_marginBottom="@dimen/dp_44" |
| | | android:src="@drawable/ic_add" |
| | | app:fabCustomSize="@dimen/dp_56" |
| | | /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | </layout> |
File was renamed from app/src/main/res/layout/item_family_create.xml |
| | |
| | | tools:context=".ui.function.CreateFamilyProjectActivity" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.hjq.bar.TitleBar |
| | |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center" |
| | | android:background="@drawable/ic_operate" |
| | | android:background="@{viewModel.typeLiveData?@drawable/ic_operate_finish:@drawable/ic_operate}" |
| | | /> |
| | | </FrameLayout> |
| | | |
| | |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入标题" |
| | | android:inputType="number" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:hint="请输入时间" |
| | | android:inputType="number" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanMutableLiveData.createTime}" |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:hint="请输入人物" |
| | | android:inputType="number" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:text="@={viewModel.beanMutableLiveData.people}" |
| | | android:textColor="#DE000000" |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:hint="请输入地点" |
| | | android:inputType="number" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanMutableLiveData.address}" |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:hint="请输入备注" |
| | | android:inputType="number" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanMutableLiveData.remark}" |
| | |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <LinearLayout |
| | | <com.android.app_base.widget.WrapRecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:orientation="vertical" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_180" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/shape_6b0000_stroke" |
| | | android:layout_marginBottom="10dp" |
| | | > |
| | | android:layout_marginBottom="20dp" |
| | | android:layout_marginTop="@dimen/dp_2" |
| | | android:paddingStart="10dp" |
| | | android:paddingEnd="5dp" |
| | | android:paddingVertical="10dp" |
| | | /> |
| | | |
| | | <Button |
| | | android:id="@+id/button_add" |
| | | android:layout_width="@dimen/dp_85" |
| | | android:layout_height="@dimen/dp_85" |
| | | android:text="+" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/dp_35" |
| | | android:gravity="center" |
| | | android:layout_marginLeft="@dimen/dp_10" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:background="@drawable/shape_73fab4cd_solid" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="导入" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_12" |
| | | android:layout_marginLeft="@dimen/dp_40" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | </ScrollView> |
| | | |
| | |
| | | xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| | | |
| | | |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.GrowthExperienceActivityViewModel" /> |
| | | </data> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:orientation="vertical" |
| | | > |
| | | <com.hjq.bar.TitleBar |
| | | android:id="@+id/titleBar" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="?attr/actionBarSize" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | android:paddingHorizontal="0dp" |
| | | android:background="@color/color_title_bar_background" |
| | | app:leftIcon="@null" |
| | | app:rightIcon="@null"> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_menu" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:background="@drawable/ic_menu" |
| | | android:layout_gravity="center_vertical" /> |
| | | |
| | | <FrameLayout |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:layout_gravity="center_vertical|end"> |
| | | |
| | | </FrameLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_default" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical"> |
| | | |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="16dp" |
| | | android:text="成长经历" |
| | | android:layout_weight="1" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_20" /> |
| | | </LinearLayout> |
| | | </com.hjq.bar.TitleBar> |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:title="成长经历" |
| | | app:titleGravity="left" |
| | | /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="603dp" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintBottom_toBottomOf="parent"> |
| | | |
| | | android:paddingHorizontal="20dp" |
| | | > |
| | | <androidx.core.widget.NestedScrollView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:paddingBottom="@dimen/dp_10" |
| | | > |
| | | <androidx.constraintlayout.widget.Guideline |
| | | android:id="@+id/gl_v_0.5" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintGuide_percent="0.5" |
| | | /> |
| | | <TextView |
| | | android:id="@+id/tv_basic_information" |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_height="wrap_content" |
| | | android:text="基本信息" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | android:id="@+id/layout_1" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_basic_information"> |
| | | <TextView |
| | | android:id="@+id/tv_name" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="姓名" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_name" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入姓名" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:id="@+id/layout_2" |
| | | android:paddingHorizontal="20dp" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_1"> |
| | | android:paddingBottom="@dimen/dp_10" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_usedName" |
| | | android:id="@+id/tv_basic_information" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="曾用名" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_usedName" |
| | | android:layout_width="140dp" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入曾用名" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:id="@+id/layout_3" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_2"> |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:id="@+id/layout_3_1" |
| | | android:layout_marginLeft="@dimen/dp_20" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_2"> |
| | | <TextView |
| | | android:id="@+id/tv_gender" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="性别" |
| | | android:text="基本信息" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_gender" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入性别" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:id="@+id/layout_1" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:orientation="vertical" |
| | | android:id="@+id/layout_3_2" |
| | | android:layout_marginEnd="@dimen/dp_20" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/tv_basic_information" |
| | | > |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_ethnicGroup" |
| | | android:id="@+id/tv_name" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="民族" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | android:text="姓名" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <EditText |
| | | android:id="@+id/editText_ethnicGroup" |
| | | android:layout_width="140dp" |
| | | <TextView |
| | | android:id="@+id/editText_name" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入民族" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="张三" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_2" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:layout_marginTop="20dp" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_1"> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_usedName" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="曾用名" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:id="@+id/editText_usedName" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | |
| | | tools:text="张四" |
| | | /> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:id="@+id/layout_4" |
| | | android:paddingHorizontal="20dp" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_3"> |
| | | <TextView |
| | | android:id="@+id/tv_nationality" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="国籍" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | |
| | | </LinearLayout> |
| | | |
| | | <ImageView |
| | | android:layout_width="100dp" |
| | | android:layout_height="127dp" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/layout_1" |
| | | android:layout_marginEnd="20dp" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_nationality" |
| | | android:layout_width="140dp" |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_3_1" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入国籍" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | android:id="@+id/layout_5" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_4"> |
| | | <TextView |
| | | android:id="@+id/tv_politicalStatus" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="政治面貌" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_politicalStatus" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入政治面貌" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginTop="20dp" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | app:layout_constraintEnd_toEndOf="@+id/layout_2" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintStart_toStartOf="@+id/layout_2" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_2"> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_gender" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="性别" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="男" |
| | | /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/layout_3_1" |
| | | > |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="名族" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="汉族" |
| | | /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/linearLayout" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="20dp" |
| | | android:orientation="vertical" |
| | | app:layout_constraintStart_toStartOf="@+id/layout_2" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_3_1"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="国籍" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="中国" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/linearLayout3" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/linearLayout"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="婚姻状况" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="未婚" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | |
| | | <LinearLayout |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintTop_toTopOf="@+id/linearLayout2"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="联系方式" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="1234567890" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/linearLayout2" |
| | | android:layout_width="140dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:layout_marginTop="20dp" |
| | | app:layout_constraintStart_toStartOf="@+id/layout_2" |
| | | app:layout_constraintTop_toBottomOf="@+id/linearLayout"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="政治面貌" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="群众" /> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_6" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_5"> |
| | | <TextView |
| | | android:id="@+id/tv_idNumber" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="身份证号" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_idNumber" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入身份证号" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | android:id="@+id/layout_7" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_6"> |
| | | <TextView |
| | | android:id="@+id/tv_address" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="户籍地址" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_12" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/editText_address" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:hint="请输入户籍地址" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | android:orientation="vertical" |
| | | android:layout_marginTop="20dp" |
| | | app:layout_constraintStart_toStartOf="@+id/layout_2" |
| | | app:layout_constraintTop_toBottomOf="@+id/linearLayout2"> |
| | | |
| | | /> |
| | | </LinearLayout> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="身份证号" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_8" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_7" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="440000199801010001" /> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_primary_experience" |
| | | android:layout_width="0dp" |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_7" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="主要学习及工作经历" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | android:orientation="vertical" |
| | | android:layout_marginTop="20dp" |
| | | app:layout_constraintStart_toStartOf="@+id/layout_2" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_6"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="户籍地址" |
| | | android:textColor="#88000000" |
| | | android:textSize="@dimen/sp_12" /> |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_1" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:contentDescription="@string/iv_fold_1_description" |
| | | android:background="@drawable/ic_unfold" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textColorHint="#6b000000" |
| | | android:textSize="@dimen/sp_16" |
| | | tools:text="广东省广州市番禺区小谷围街道" /> |
| | | |
| | | </LinearLayout> |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_8" |
| | | app:layout_constraintVertical_bias="1.0" |
| | | tools:itemCount="4" |
| | | tools:layout_editor_absoluteX="-81dp" |
| | | tools:listitem="@layout/item_growth_experience_primary" /> |
| | | <LinearLayout |
| | | android:id="@+id/layout_9" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_8" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:layout_marginTop="5dp" |
| | | android:background="#6B000000" /> |
| | | </LinearLayout> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_relationship_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | <LinearLayout |
| | | android:id="@+id/layout_8" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="家庭成员及主要社会关系情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_7" |
| | | tools:layout_editor_absoluteX="0dp" |
| | | android:layout_marginTop="16dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_primary_experience" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="主要学习及工作经历" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_1" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:contentDescription="@string/iv_fold_1_description" |
| | | android:background="@drawable/ic_unfold" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_2" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_gravity="center" |
| | | android:layout_marginEnd="24dp" |
| | | android:contentDescription="@string/iv_fold_1_description" |
| | | android:background="@drawable/ic_unfold" /> |
| | | </LinearLayout> |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:layout_marginTop="16dp" |
| | | tools:itemCount="3" |
| | | tools:listitem="@layout/item_growth_experience_primary" /> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_10" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_9" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_9" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_8" |
| | | android:layout_marginTop="30dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_relationship_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:layout_height="wrap_content" |
| | | android:text="家庭成员及主要社会关系情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_2" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_gravity="center" |
| | | android:contentDescription="@string/iv_fold_1_description" |
| | | android:background="@drawable/ic_unfold" /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_relationship" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:layout_marginTop="16dp" |
| | | tools:itemCount="3" |
| | | tools:listitem="@layout/item_growth_experience_primary" /> |
| | | </LinearLayout> |
| | | |
| | | |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_10" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_9" |
| | | android:layout_marginTop="30dp" |
| | | > |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_migration_condition" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="移居国(境)情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="15dp" |
| | | android:text="是否拥有外籍、境外居留权、长期居留许可" |
| | | android:textColor="#6b000000" |
| | | android:textSize="12sp" /> |
| | | |
| | | <RadioButton |
| | | android:id="@+id/radioButton" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:checked="true" |
| | | android:text="是" |
| | | /> |
| | | <View |
| | | android:layout_width="140dp" |
| | | android:layout_height="1dp" |
| | | android:background="#6B000000" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="20dp" |
| | | android:text="证件号码" |
| | | android:textColor="#6b000000" |
| | | android:textSize="12sp" /> |
| | | <TextView |
| | | android:id="@+id/editText_Residence_Number" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:paddingHorizontal="20dp" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" |
| | | /> |
| | | <View |
| | | android:layout_width="140dp" |
| | | android:layout_height="1dp" |
| | | android:background="#6B000000" |
| | | android:layout_marginTop="8dp" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_11" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:layout_marginTop="30dp" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_10" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_certificate_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="持有出入境证件情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_3" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:background="@drawable/ic_unfold" /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_certificates" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:layout_marginTop="16dp" |
| | | tools:itemCount="3" |
| | | tools:listitem="@layout/item_growth_experience_primary" /> |
| | | </LinearLayout> |
| | | |
| | | |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_12" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_11" |
| | | android:layout_marginTop="30dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_abroad_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="出国(境)情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_4" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:background="@drawable/ic_unfold" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_abroad" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:layout_marginTop="16dp" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_11" |
| | | tools:itemCount="3" |
| | | tools:listitem="@layout/item_growth_experience_primary" /> |
| | | </LinearLayout> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_migration_condition" |
| | | android:id="@+id/tv_autobiography" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="移居国(境)情况" |
| | | android:layout_marginTop="30dp" |
| | | android:text="自传" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_9" /> |
| | | |
| | | <TextView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:paddingHorizontal="@dimen/dp_20" |
| | | android:paddingTop="@dimen/dp_5" |
| | | android:text="是否拥有外籍、境外居留权、长期居留许可" |
| | | android:textColor="#6b000000" |
| | | android:textSize="12sp" /> |
| | | |
| | | <RadioButton |
| | | android:id="@+id/radioButton" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:paddingHorizontal="@dimen/dp_9" |
| | | android:checked="true" |
| | | android:text="是" |
| | | /> |
| | | <TextView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:paddingHorizontal="@dimen/dp_20" |
| | | android:paddingTop="@dimen/dp_5" |
| | | android:text="证件号码" |
| | | android:textColor="#6b000000" |
| | | android:textSize="12sp" /> |
| | | <EditText |
| | | android:id="@+id/editText_Residence_Number" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:paddingHorizontal="20dp" |
| | | android:hint="请输入证件号码" |
| | | android:inputType="number" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="@dimen/sp_16" /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_11" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_10" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_certificate_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="持有出入境证件情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_12" /> |
| | | |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_3" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:background="@drawable/ic_unfold" /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_12" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_11" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_abroad_condition" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="出国(境)情况" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" /> |
| | | |
| | | |
| | | <ImageButton |
| | | android:id="@+id/iv_fold_4" |
| | | android:layout_width="20dp" |
| | | android:layout_height="20dp" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_gravity="center_vertical" |
| | | android:background="@drawable/ic_unfold" /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | |
| | | android:id="@+id/layout_13" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | app:layout_constraintTop_toBottomOf="@id/layout_12" |
| | | tools:layout_editor_absoluteX="0dp"> |
| | | <TextView |
| | | android:id="@+id/tv_autobiography" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="@dimen/dp_20" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:text="自传" |
| | | android:textColor="#ff000000" |
| | | android:textSize="@dimen/sp_20" |
| | | android:textStyle="bold" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/layout_12" /> |
| | | |
| | | </LinearLayout> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | </androidx.core.widget.NestedScrollView> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | </layout> |
| | | </layout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.HomeDevicesActivityViewModel" /> |
| | | </data> |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:id="@+id/titleBar" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | > |
| | | <FrameLayout |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:layout_marginHorizontal="16dp" |
| | | android:layout_gravity="center_vertical|end" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_operate" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center" |
| | | android:background="@drawable/ic_operate" |
| | | /> |
| | | </FrameLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_default" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_title" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginStart="16dp" |
| | | android:text="家庭设备" |
| | | android:layout_weight="1" |
| | | android:textColor="@color/white" |
| | | android:textSize="@dimen/sp_20" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_default" |
| | | android:layout_width="@dimen/dp_24" |
| | | android:layout_height="@dimen/dp_24" |
| | | android:background="@drawable/ic_search" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_search" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:layout_marginVertical="4dp" |
| | | android:layout_marginHorizontal="56dp" |
| | | android:gravity="center_vertical" |
| | | android:background="@color/white" |
| | | android:paddingHorizontal="5dp" |
| | | android:visibility="gone" |
| | | > |
| | | <ImageView |
| | | android:id="@+id/iv_search" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_gray" |
| | | /> |
| | | <EditText |
| | | android:id="@+id/et_search" |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:layout_marginStart="5dp" |
| | | android:textSize="14sp" |
| | | android:textColor="#61000000" |
| | | android:background="@null" |
| | | android:imeOptions="actionSearch" |
| | | android:text="" |
| | | android:singleLine="true" |
| | | android:hint="在“家大事记内搜索”" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_search_type" |
| | | android:layout_width="24dp" |
| | | android:layout_height="24dp" |
| | | android:background="@drawable/ic_search_by" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | </com.android.app_base.widget.ExtendTitleBar> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_data_null" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar"> |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/img_data_null" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="18dp" |
| | | android:text="暂时还没有数据哦~\n点击”+”立即创建" |
| | | android:textSize="14sp" |
| | | android:textColor="#73000000" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/recyclerView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:background="@color/color_normal_background" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@+id/titleBar" |
| | | app:layout_constraintVertical_bias="1.0" |
| | | tools:itemCount="20" |
| | | tools:layout_editor_absoluteX="-81dp" |
| | | tools:listitem="@layout/item_family_memorabilia" /> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | |
| | | </layout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | > |
| | | |
| | | <data> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.HomeDevicesDetailActivityViewModel" /> |
| | | </data> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="@color/color_normal_background" |
| | | android:orientation="vertical"> |
| | | |
| | | <com.android.app_base.widget.ExtendTitleBar |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:titleGravity="left" |
| | | /> |
| | | <ScrollView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintTop_toBottomOf="@id/titleBar" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="20dp" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_10" |
| | | android:layout_height="@dimen/dp_20" |
| | | android:text="设备名称" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | |
| | | |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:inputType="text" |
| | | android:autofillHints="creditCardNumber" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:textSize="16sp" |
| | | android:text="@={viewModel.beanLiveData.name}" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="时间" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.createTime}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="购买人" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:text="@={viewModel.beanLiveData.people}" |
| | | android:textColor="#DE000000" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="事项内容" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.content}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="存放地点" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.address}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="备注" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <EditText |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="2dp" |
| | | android:inputType="text" |
| | | android:textColorHint="#6b000000" |
| | | android:textColor="#DE000000" |
| | | android:text="@={viewModel.beanLiveData.remark}" |
| | | android:textSize="16sp" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_marginTop="10dp" |
| | | android:layout_height="wrap_content" |
| | | android:text="电子文件" |
| | | android:textColor="#767375" |
| | | android:textSize="12sp" |
| | | /> |
| | | <RelativeLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/shape_6b0000_stroke" |
| | | > |
| | | <com.android.app_base.widget.WrapRecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:orientation="vertical" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginBottom="10dp" |
| | | android:layout_marginTop="2sp" |
| | | android:paddingStart="10dp" |
| | | android:paddingEnd="5dp" |
| | | android:paddingVertical="10dp" |
| | | /> |
| | | |
| | | </RelativeLayout> |
| | | |
| | | |
| | | </LinearLayout> |
| | | </ScrollView> |
| | | |
| | | |
| | | </LinearLayout> |
| | | |
| | | </layout> |
| | |
| | | app:layout_constraintTop_toTopOf="@id/layout_home_root_net"> |
| | | |
| | | <ImageView |
| | | android:layout_width="@dimen/dp_24" |
| | | android:layout_height="@dimen/dp_24" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/function_notes" /> |
| | | |
| | | <TextView |
| | |
| | | android:textSize="@dimen/sp_14" /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:id="@+id/layout_home_devices" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:gravity="center" |
| | | android:orientation="vertical" |
| | | app:layout_constraintEnd_toEndOf="@id/layout_family_memorabilia" |
| | | app:layout_constraintStart_toStartOf="@id/layout_family_memorabilia" |
| | | app:layout_constraintTop_toTopOf="@+id/layout_income_and_expenses"> |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/function_home_devices" /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginTop="@dimen/dp_4" |
| | | android:text="家庭设备" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_14" /> |
| | | </LinearLayout> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_personal_module" |
| | | android:layout_width="wrap_content" |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="bean" |
| | | type="com.application.zhangshi_app_android.bean.FamilyAssetsBean" /> |
| | | </data> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <androidx.cardview.widget.CardView |
| | | android:id="@+id/cardView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="40dp" |
| | | android:layout_margin="@dimen/dp_2" |
| | | app:cardCornerRadius="@dimen/dp_10" |
| | | app:cardBackgroundColor="@color/color_card_pink" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | > |
| | | <RelativeLayout |
| | | android:id="@+id/layout_title" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_centerVertical="true" |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.type}" |
| | | android:textStyle="bold" |
| | | tools:text="房产证" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_centerInParent="true" |
| | | android:layout_centerHorizontal="true" |
| | | android:layout_marginStart="24dp" |
| | | android:text="@{bean.holder}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | tools:text="张三" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.createTime}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | | android:layout_centerVertical="true" |
| | | tools:text="2019-01-12" |
| | | /> |
| | | |
| | | </RelativeLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_content" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="@dimen/dp_24" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="序号:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{String.valueOf(bean.id)}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="证件卡号:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.title}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="开户行:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.location}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="存放地点:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.address}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="备注:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.remark}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | android:text="电子文件:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_15" |
| | | > |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | tools:listitem="@layout/item_image" |
| | | tools:itemCount="3" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | |
| | | </LinearLayout> |
| | | </layout> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_15" |
| | | > |
| | | |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="@dimen/dp_70" |
| | | android:layout_height="@dimen/dp_45" |
| | | android:background="@drawable/img_sakura" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="sakura.jpg" |
| | | android:textSize="@dimen/sp_10" |
| | | android:textColor="@color/black" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | android:layout_marginStart="@dimen/dp_10" |
| | | > |
| | | <ImageView |
| | | android:layout_width="@dimen/dp_70" |
| | | android:layout_height="@dimen/dp_45" |
| | | android:background="@drawable/img_lotus" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="lotus.jpg" |
| | | android:textSize="@dimen/sp_10" |
| | | android:textColor="@color/black" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | android:layout_marginStart="@dimen/dp_10" |
| | | > |
| | | <androidx.cardview.widget.CardView |
| | | android:layout_width="@dimen/dp_70" |
| | | android:layout_height="@dimen/dp_45" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | app:cardCornerRadius="@dimen/dp_5" |
| | | > |
| | | <ImageView |
| | | android:layout_width="@dimen/dp_70" |
| | | android:layout_height="@dimen/dp_45" |
| | | android:background="@drawable/img_sakura" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="#52000000" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_play" |
| | | android:layout_gravity="center" |
| | | /> |
| | | </androidx.cardview.widget.CardView> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="sakura.mp4" |
| | | android:textSize="@dimen/sp_10" |
| | | android:textColor="@color/black" |
| | | /> |
| | | </LinearLayout> |
| | | tools:listitem="@layout/item_image" |
| | | tools:itemCount="3" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_delete" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_alignParentEnd="true" |
| | |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <CheckBox |
| | | android:id="@+id/checkbox" |
| | | android:layout_width="18dp" |
| | | android:layout_height="18dp" |
| | | android:layout_marginStart="3dp" |
| | | android:layout_centerVertical="true" |
| | | android:button="@drawable/selector_checkbox" |
| | | android:background="?selectableItemBackgroundBorderless" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.abroadZone}" |
| | | android:layout_weight="1" |
| | | android:textStyle="bold" |
| | | /> |
| | |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.duringTime}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | |
| | | <androidx.cardview.widget.CardView |
| | | android:id="@+id/cardView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="40dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_margin="@dimen/dp_2" |
| | | app:cardCornerRadius="@dimen/dp_10" |
| | | app:cardBackgroundColor="@color/color_card_pink" |
| | |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <CheckBox |
| | | android:id="@+id/checkbox" |
| | | android:layout_width="18dp" |
| | | android:layout_height="18dp" |
| | | android:layout_marginStart="3dp" |
| | | android:layout_centerVertical="true" |
| | | android:button="@drawable/selector_checkbox" |
| | | android:background="?selectableItemBackgroundBorderless" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.passCheck}" |
| | | android:layout_weight="1" |
| | | android:textStyle="bold" |
| | | /> |
| | |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.duringTime}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.idNumber}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <CheckBox |
| | | android:id="@+id/checkbox" |
| | | android:layout_width="18dp" |
| | | android:layout_height="18dp" |
| | | android:layout_marginStart="3dp" |
| | | android:layout_centerVertical="true" |
| | | android:button="@drawable/selector_checkbox" |
| | | android:background="?selectableItemBackgroundBorderless" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.duringTime}" |
| | | android:layout_weight="1" |
| | | android:textStyle="bold" |
| | | /> |
| | |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.School}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{String.valueOf(bean.id)}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <CheckBox |
| | | android:id="@+id/checkbox" |
| | | android:layout_width="18dp" |
| | | android:layout_height="18dp" |
| | | android:layout_marginStart="3dp" |
| | | android:layout_centerVertical="true" |
| | | android:button="@drawable/selector_checkbox" |
| | | android:background="?selectableItemBackgroundBorderless" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.relationship}" |
| | | android:layout_weight="1" |
| | | android:textStyle="bold" |
| | | /> |
| | |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.idName}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.politicalStatus}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="bean" |
| | | type="com.application.zhangshi_app_android.bean.HomeDevicesBean" /> |
| | | </data> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | > |
| | | <androidx.cardview.widget.CardView |
| | | android:id="@+id/cardView" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="40dp" |
| | | android:layout_margin="@dimen/dp_2" |
| | | app:cardCornerRadius="@dimen/dp_10" |
| | | app:cardBackgroundColor="@color/color_card_pink" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | > |
| | | <LinearLayout |
| | | android:id="@+id/layout_title" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="@dimen/dp_40" |
| | | android:gravity="center_vertical" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_centerVertical="true" |
| | | android:layout_marginStart="24dp" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.name}" |
| | | android:textStyle="bold" |
| | | tools:text="电视" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:layout_height="wrap_content" |
| | | android:layout_centerInParent="true" |
| | | android:layout_marginStart="24dp" |
| | | android:text="@{bean.address}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textStyle="bold" |
| | | android:gravity="center" |
| | | tools:text="张三" /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:textSize="@dimen/sp_16" |
| | | android:textColor="@color/black" |
| | | android:text="@{bean.createTime}" |
| | | android:textStyle="bold" |
| | | android:layout_marginEnd="24dp" |
| | | android:layout_alignParentEnd="true" |
| | | android:layout_centerVertical="true" |
| | | tools:text="2019-01-12" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_content" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="@dimen/dp_24" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="序号:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{String.valueOf(bean.id)}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="购买人:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.people}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="事项内容:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.content}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="备注:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@{bean.remark}" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | </LinearLayout> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginBottom="@dimen/dp_6" |
| | | android:text="电子文件:" |
| | | android:textColor="@color/black" |
| | | android:textSize="@dimen/sp_12" |
| | | android:textStyle="bold" |
| | | /> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="horizontal" |
| | | android:layout_marginBottom="@dimen/dp_15" |
| | | > |
| | | <androidx.recyclerview.widget.RecyclerView |
| | | android:id="@+id/rv_image" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content" |
| | | tools:listitem="@layout/item_image" |
| | | tools:itemCount="3" |
| | | /> |
| | | |
| | | </LinearLayout> |
| | | |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | |
| | | </LinearLayout> |
| | | |
| | | </layout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| | | |
| | | <data> |
| | | <variable |
| | | name="url" |
| | | type="String" /> |
| | | </data> |
| | | |
| | | <androidx.constraintlayout.widget.ConstraintLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="wrap_content"> |
| | | <ImageView |
| | | android:id="@+id/iv_image" |
| | | android:layout_width="87dp" |
| | | android:layout_height="87dp" |
| | | android:layout_marginTop="7.5dp" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:imageUrl="@{url}" |
| | | /> |
| | | <ImageView |
| | | android:id="@+id/iv_delete" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_image_delete" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | app:layout_constraintStart_toEndOf="@id/iv_image" |
| | | android:layout_marginStart="-7.5dp" |
| | | /> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
| | | </layout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | android:layout_width="@dimen/dp_85" |
| | | android:layout_height="@dimen/dp_85" |
| | | android:orientation="vertical" |
| | | android:gravity="center" |
| | | android:background="@drawable/shape_73fab4cd_solid" |
| | | android:layout_marginTop="8dp" |
| | | android:layout_marginStart="2dp" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_import_add" |
| | | /> |
| | | |
| | | |
| | | </LinearLayout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.core.widget.NestedScrollView |
| | | xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | android:layout_width="211dp" |
| | | android:layout_height="match_parent" |
| | | android:layout_gravity="start" |
| | | android:background="@color/color_card_pink" |
| | | android:paddingTop="25dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingHorizontal="12dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center_horizontal" |
| | | android:layout_marginTop="33dp" |
| | | android:layout_marginBottom="20dp" |
| | | android:gravity="center" |
| | | > |
| | | <androidx.constraintlayout.utils.widget.ImageFilterView |
| | | android:layout_width="50dp" |
| | | android:layout_height="50dp" |
| | | app:roundPercent="1" |
| | | android:background="@drawable/img_sakura" |
| | | /> |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="张喵" |
| | | android:textSize="18sp" |
| | | android:textColor="@color/black" |
| | | android:layout_marginStart="16dp" |
| | | /> |
| | | </LinearLayout> |
| | | <androidx.cardview.widget.CardView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="304dp" |
| | | app:cardBackgroundColor="@color/white" |
| | | app:cardCornerRadius="10dp" |
| | | app:cardElevation="0dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | android:paddingVertical="8dp" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="核心板块" |
| | | android:textColor="@color/black" |
| | | android:textSize="12sp" |
| | | android:layout_marginStart="14dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:background="#FFF3F3F3" |
| | | /> |
| | | <LinearLayout |
| | | android:id="@+id/dl_home_root_net" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_family_root_net" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家根网" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_family_memorabilia" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_notes" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家大事记" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_family_assets" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_asset" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭资产" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_home_devices" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_home_devices" |
| | | /> |
| | | |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭设备" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_honor_collection" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_honor" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="收藏、荣誉" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_little_doctor" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_little_doctor" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="小医生" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_clean_storage" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_cleaning" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="保洁、收纳" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_contacts" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_mail_list" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="通讯录" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_pet" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_pet" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="魅宠" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_income_and_expenses" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_income_expense" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="家庭收支台账" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | <androidx.cardview.widget.CardView |
| | | android:layout_width="match_parent" |
| | | android:layout_height="240dp" |
| | | app:cardBackgroundColor="@color/white" |
| | | app:cardCornerRadius="10dp" |
| | | app:cardElevation="0dp" |
| | | android:layout_marginTop="26dp" |
| | | android:layout_marginBottom="14dp" |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:orientation="vertical" |
| | | > |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="个人板块" |
| | | android:textColor="@color/black" |
| | | android:textSize="12sp" |
| | | android:layout_marginVertical="8dp" |
| | | android:layout_marginStart="14dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="1dp" |
| | | android:background="#FFF3F3F3" |
| | | /> |
| | | <LinearLayout |
| | | android:id="@+id/dl_growing_up" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_growth" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="成长经历阅历" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_marriage" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_marriage" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="婚姻" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_property" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_property" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="财产" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_wish" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="百年心愿" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_hundred_wish" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_tour" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="旅游" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_health_care" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_health" /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="健康保健" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_certificate_of_honor" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_certificate" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="荣誉、证书奖项" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/dl_privacy" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:paddingHorizontal="15dp" |
| | | android:gravity="center" |
| | | > |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_privacy" |
| | | /> |
| | | <TextView |
| | | android:layout_width="0dp" |
| | | android:layout_height="wrap_content" |
| | | android:layout_weight="1" |
| | | android:text="隐私" |
| | | android:textColor="@color/black" |
| | | android:textSize="14sp" |
| | | android:layout_marginStart="15dp" |
| | | /> |
| | | <ImageView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_vector_gray" |
| | | /> |
| | | </LinearLayout> |
| | | </LinearLayout> |
| | | |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | </LinearLayout> |
| | | |
| | | </androidx.core.widget.NestedScrollView> |
| | |
| | | > |
| | | <LinearLayout |
| | | android:layout_width="85dp" |
| | | android:layout_height="122dp" |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center_horizontal" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_add" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:gravity="center" |
| | | android:text="新建" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_add" |
| | | android:drawablePadding="5dp" |
| | | android:layout_weight="1" |
| | | /> |
| | | <View |
| | | <LinearLayout |
| | | android:id="@+id/layout_add" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | <TextView |
| | | android:id="@+id/tv_select" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="选择" |
| | | android:gravity="center" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_select" |
| | | android:drawablePadding="5dp" |
| | | android:layout_weight="1" |
| | | /> |
| | | <View |
| | | android:orientation="vertical" |
| | | android:gravity="center_horizontal" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_add" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="32dp" |
| | | android:gravity="center" |
| | | android:text="新建" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_add" |
| | | android:drawablePadding="5dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | </LinearLayout> |
| | | <LinearLayout |
| | | android:id="@+id/layout_select" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | android:layout_height="wrap_content" |
| | | android:orientation="vertical" |
| | | android:gravity="center_horizontal" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_select" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="32dp" |
| | | android:text="选择" |
| | | android:gravity="center" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_select" |
| | | android:drawablePadding="5dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_from_new_to_old" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_height="32dp" |
| | | android:text="由新到旧" |
| | | android:gravity="center" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_order" |
| | | android:drawablePadding="5dp" |
| | | android:layout_weight="1" |
| | | android:drawablePadding="3dp" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | |
| | | <TextView |
| | | android:id="@+id/tv_from_old_to_new" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_height="32dp" |
| | | android:text="由旧到新" |
| | | android:gravity="center" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | app:drawableStartCompat="@drawable/ic_operate_order" |
| | | android:drawablePadding="5dp" |
| | | android:layout_weight="1" |
| | | android:drawablePadding="3dp" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | android:orientation="vertical" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | app:cardBackgroundColor="#FFFAD1E0" |
| | | app:cardCornerRadius="10dp" |
| | | app:cardElevation="0dp" |
| | | > |
| | | <layout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto"> |
| | | |
| | | <data> |
| | | <import type="android.text.TextUtils" /> |
| | | <import type="android.view.View" /> |
| | | <variable |
| | | name="viewModel" |
| | | type="com.application.zhangshi_app_android.ui.function.FamilyMemorabiliaActivityViewModel" /> |
| | | </data> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="200dp" |
| | | android:layout_height="180dp" |
| | | android:orientation="vertical" |
| | | android:gravity="center_horizontal" |
| | | > |
| | | <TextView |
| | | android:id="@+id/tv_global_search" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:gravity="center" |
| | | android:text="全局搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | android:layout_weight="1" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | <TextView |
| | | android:id="@+id/tv_search_in_family_memorabilia" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:gravity="center" |
| | | android:text="在“家大事记”内搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | android:layout_weight="1" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@color/white"> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_search_by_title" |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:gravity="center" |
| | | android:text="按“大事记标题”搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" /> |
| | | android:layout_height="0.5dp" |
| | | android:background="#FF939393" /> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="40dp" |
| | | android:layout_marginHorizontal="12dp" |
| | | android:gravity="center"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="标题" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <EditText |
| | | android:id="@+id/et_title" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:layout_height="wrap_content" |
| | | android:background="@null" |
| | | android:inputType="text" |
| | | android:layout_marginStart="6dp" |
| | | android:text="@={viewModel.requestBeanMutableLiveData.title}" |
| | | android:hint="请输入标题" |
| | | android:textColorHint="#61000000" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_clear_title" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:visibility="@{viewModel.requestBeanMutableLiveData.title != null && viewModel.requestBeanMutableLiveData.title.length() > 0 ? View.VISIBLE : View.GONE}" |
| | | android:background="@drawable/ic_clear" /> |
| | | </LinearLayout> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | <TextView |
| | | android:id="@+id/tv_search_by_people" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:gravity="center" |
| | | android:text="按“人物”搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | android:layout_weight="1" |
| | | /> |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | android:background="#FF939393" /> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_search_by_time" |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:layout_weight="1" |
| | | android:gravity="center" |
| | | android:text="按“时间”搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" /> |
| | | android:layout_height="40dp" |
| | | android:layout_marginHorizontal="12dp" |
| | | android:gravity="center"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="人物" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <EditText |
| | | android:id="@+id/et_person" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:inputType="text" |
| | | android:layout_height="wrap_content" |
| | | android:background="@null" |
| | | android:layout_marginStart="6dp" |
| | | android:text="@={viewModel.requestBeanMutableLiveData.people}" |
| | | android:hint="请输入人物" |
| | | android:textColorHint="#61000000" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_clear_person" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_clear" |
| | | android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.people)?View.GONE:View.VISIBLE}" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" |
| | | /> |
| | | <TextView |
| | | android:id="@+id/tv_search_by_place" |
| | | android:background="#FF939393" /> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0dp" |
| | | android:gravity="center" |
| | | android:text="按“地点”搜索" |
| | | android:textColor="#FF333333" |
| | | android:textSize="12sp" |
| | | android:layout_weight="1" |
| | | /> |
| | | android:layout_height="40dp" |
| | | android:layout_marginHorizontal="12dp" |
| | | android:gravity="center"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="时间" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <EditText |
| | | android:id="@+id/et_time" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:layout_height="wrap_content" |
| | | android:background="@null" |
| | | android:inputType="text" |
| | | android:layout_marginStart="6dp" |
| | | android:text="@={viewModel.requestBeanMutableLiveData.createTime}" |
| | | android:hint="请输入时间" |
| | | android:textColorHint="#61000000" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_clear_time" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_clear" |
| | | android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.createTime)?View.GONE:View.VISIBLE}" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | <View |
| | | android:layout_width="match_parent" |
| | | android:layout_height="0.3dp" |
| | | android:background="#FF939393" /> |
| | | |
| | | <LinearLayout |
| | | android:layout_width="match_parent" |
| | | android:layout_height="40dp" |
| | | android:layout_marginHorizontal="12dp" |
| | | android:gravity="center"> |
| | | |
| | | <TextView |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="地点" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <EditText |
| | | android:id="@+id/et_place" |
| | | android:layout_width="0dp" |
| | | android:layout_weight="1" |
| | | android:layout_height="wrap_content" |
| | | android:background="@null" |
| | | android:layout_marginStart="6dp" |
| | | android:text="@={viewModel.requestBeanMutableLiveData.address}" |
| | | android:inputType="text" |
| | | android:hint="请输入地点" |
| | | android:textColorHint="#61000000" |
| | | android:textColor="#FF333333" |
| | | android:textSize="14sp" /> |
| | | |
| | | <ImageView |
| | | android:id="@+id/iv_clear_place" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:background="@drawable/ic_clear" |
| | | android:visibility="@{TextUtils.isEmpty(viewModel.requestBeanMutableLiveData.address)?View.GONE:View.VISIBLE}" |
| | | /> |
| | | </LinearLayout> |
| | | |
| | | |
| | | </LinearLayout> |
| | | |
| | | </androidx.cardview.widget.CardView> |
| | | </layout> |
| | |
| | | // kotlin扩展(可选) |
| | | // implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.2.2' |
| | | //图片相关 |
| | | api 'com.github.bumptech.glide:glide:4.11.0' |
| | | annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' |
| | | api 'com.github.bumptech.glide:glide:4.12.0' |
| | | annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' |
| | | //内存泄露工具 |
| | | debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1' |
| | | |
| | | //图片选择器 |
| | | // PictureSelector 基础 (必须) |
| | | api 'io.github.lucksiege:pictureselector:v3.10.8' |
| | | // 图片压缩 (按需引入) |
| | | api 'io.github.lucksiege:compress:v3.10.8' |
| | | // 图片裁剪 (按需引入) |
| | | api 'io.github.lucksiege:ucrop:v3.10.8' |
| | | // 自定义相机 (按需引入) |
| | | api 'io.github.lucksiege:camerax:v3.10.8' |
| | | |
| | | // 动画解析库:https://github.com/airbnb/lottie-android |
| | | // 动画资源:https://lottiefiles.com、https://icons8.com/animated-icons |
| | | api 'com.airbnb.android:lottie:4.1.0' |
| | | |
| | | } |
| | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.03.02. 17:09 |
| | | * @desc |
| | | * @desc RecyclerView 适配器基类 |
| | | */ |
| | | public abstract class BaseRVAdapter<T,VDB extends ViewDataBinding,VH extends BaseRVAdapter.BaseViewHolder<VDB>> extends RecyclerView.Adapter<VH> { |
| | | |
| | |
| | | } |
| | | mDataList.set(position, item); |
| | | notifyItemChanged(position); |
| | | }qe |
| | | } |
| | | /** |
| | | * 添加单条数据 |
| | | */ |
| | |
| | | |
| | | import android.graphics.Bitmap; |
| | | import android.graphics.BitmapFactory; |
| | | import android.net.Uri; |
| | | import android.util.Base64; |
| | | import android.widget.ImageView; |
| | | |
| | | import androidx.databinding.BindingAdapter; |
| | | |
| | | import com.android.app_base.utils.GlideUtil; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | */ |
| | | public class ImageViewAdapter { |
| | | @BindingAdapter({"imageUrl"}) |
| | | public static void loadImage(ImageView imageView, String url) { |
| | | public static void loadUrlImage(ImageView imageView, String url) { |
| | | GlideUtil.loadImage(url, imageView); |
| | | } |
| | | @BindingAdapter({"imageUri"}) |
| | | public static void loadUriImage(ImageView imageView, String uri) { |
| | | imageView.setImageURI(Uri.parse(uri)); |
| | | |
| | | } |
| | | @BindingAdapter({"imageBase64"}) |
New file |
| | |
| | | package com.android.app_base.base.dialog; |
| | | |
| | | import static com.blankj.utilcode.util.StringUtils.getString; |
| | | |
| | | import android.content.Context; |
| | | import android.view.View; |
| | | import android.widget.TextView; |
| | | |
| | | import androidx.annotation.StringRes; |
| | | |
| | | import com.android.app_base.R; |
| | | |
| | | public final class WaitDialog { |
| | | |
| | | public static final class Builder |
| | | extends BaseDialog.Builder<Builder> { |
| | | |
| | | private final TextView mMessageView; |
| | | |
| | | public Builder(Context context) { |
| | | super(context); |
| | | setContentView(R.layout.wait_dialog); |
| | | setAnimStyle(BaseDialog.ANIM_TOAST); |
| | | setBackgroundDimEnabled(false); |
| | | setCancelable(false); |
| | | |
| | | mMessageView = findViewById(R.id.tv_wait_message); |
| | | } |
| | | |
| | | public Builder setMessage(@StringRes int id) { |
| | | return setMessage(getString(id)); |
| | | } |
| | | |
| | | public Builder setMessage(CharSequence text) { |
| | | mMessageView.setText(text); |
| | | mMessageView.setVisibility(text == null ? View.GONE : View.VISIBLE); |
| | | return this; |
| | | } |
| | | } |
| | | } |
| | |
| | | import androidx.appcompat.app.AppCompatActivity; |
| | | import androidx.databinding.DataBindingUtil; |
| | | import androidx.databinding.ViewDataBinding; |
| | | import androidx.drawerlayout.widget.DrawerLayout; |
| | | import androidx.lifecycle.Observer; |
| | | import androidx.lifecycle.ViewModelProvider; |
| | | |
| | | import com.android.app_base.action.TitleBarAction; |
| | | import com.android.app_base.base.BaseApplication; |
| | | import com.android.app_base.base.action.ClickAction; |
| | | import com.android.app_base.base.viewmodel.BaseViewModel; |
| | | import com.android.app_base.base.StateViewEnum; |
| | | import com.android.app_base.utils.ScreenSizeUtils; |
| | | import com.blankj.utilcode.util.ToastUtils; |
| | | import com.gyf.immersionbar.ImmersionBar; |
| | | import com.hjq.bar.TitleBar; |
| | |
| | | /** |
| | | * Activity基类,所有的 Activity 都要继承此类 |
| | | */ |
| | | public abstract class BaseActivity<V extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction { |
| | | protected V binding; |
| | | public abstract class BaseActivity<VDB extends ViewDataBinding,VM extends BaseViewModel> extends AppCompatActivity implements TitleBarAction, ClickAction { |
| | | protected VDB binding; |
| | | protected VM viewModel; |
| | | private int viewModelId; |
| | | |
| | | /** |
| | | * 标题栏对象 |
| | | */ |
| | |
| | | * 状态栏沉浸 |
| | | */ |
| | | private ImmersionBar mImmersionBar; |
| | | |
| | | |
| | | |
| | | @Override |
| | | protected void onCreate(@Nullable Bundle savedInstanceState) { |
| | |
| | | initView(); |
| | | //页面事件监听的方法,用于ViewModel层转到View层的事件注册 |
| | | initLiveDataObserve(); |
| | | |
| | | } |
| | | @Override |
| | | protected void onResume() { |
| | |
| | | initStateView(); |
| | | //初始化沉浸式状态栏和 titleBar |
| | | initStatusBar(); |
| | | initSoftKeyboard(); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | protected void initViewDataBindingAndViewModel() { |
| | | if (getLayoutId() > 0) { |
| | | binding = DataBindingUtil.setContentView(this, getLayoutId()); |
| | | initSoftKeyboard(); |
| | | binding = initViewBinding(); |
| | | } |
| | | viewModelId = getVariableId(); |
| | | viewModel = initViewModel(); |
| | |
| | | //让ViewModel拥有View的生命周期感应 |
| | | getLifecycle().addObserver(viewModel); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化ViewBinding |
| | | */ |
| | | protected VDB initViewBinding() { |
| | | return DataBindingUtil.setContentView(this, getLayoutId()); |
| | | } |
| | | /** |
| | | * 初始化ViewModel |
| | |
| | | return new ViewModelProvider(this, (ViewModelProvider.Factory) ViewModelProvider.AndroidViewModelFactory.getInstance(getApplication())).get(vmClass); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 对状态视图liveData进行观察监听 |
| | | */ |
| | |
| | | //重定向URL |
| | | @SuppressLint("MissingPermission") HttpUrl modifiedUrl = request.url().newBuilder() |
| | | //添加的公共参数 |
| | | .addQueryParameter("deviceId", PhoneUtils.getDeviceId()) |
| | | // .addQueryParameter("deviceId", PhoneUtils.getDeviceId()) |
| | | .addQueryParameter("udid", "") |
| | | .addQueryParameter("channel", "") |
| | | .addQueryParameter("version", "") |
| | |
| | | .addQueryParameter("os", "android") |
| | | .addQueryParameter("osVersion", DeviceUtils.getSDKVersionName()) |
| | | .addQueryParameter("isSimulator", DeviceUtils.isEmulator() ? "1" : "0") |
| | | .addQueryParameter("imei", PhoneUtils.getIMEI()) |
| | | // .addQueryParameter("imei", PhoneUtils.getIMEI()) |
| | | .addQueryParameter("oaid", "android") |
| | | .addQueryParameter("androidId", DeviceUtils.getAndroidID()) |
| | | // .addQueryParameter("networkType", NetworkUtils.getNetworkType().name()) |
New file |
| | |
| | | package com.android.app_base.manager; |
| | | |
| | | import android.Manifest; |
| | | import android.os.Build; |
| | | |
| | | import androidx.fragment.app.Fragment; |
| | | |
| | | import com.blankj.utilcode.util.PermissionUtils; |
| | | import com.luck.picture.lib.interfaces.OnRequestPermissionListener; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.02. 18:45 |
| | | * @desc 解决Android 13 以上版本使用PictureSelector 选择图片时报错的问题 |
| | | * 'io.github.lucksiege:pictureselector:v3.10.9'则不需要 |
| | | * //TODO 待删 |
| | | */ |
| | | public class OnPermissionsInterceptListenerImpl implements com.luck.picture.lib.interfaces.OnPermissionsInterceptListener { |
| | | @Override |
| | | public void requestPermission(Fragment fragment, String[] permissionArray, OnRequestPermissionListener call) { |
| | | if (permissionArray == null || fragment == null || fragment.getContext() == null) return; |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
| | | //把权限数组转换成List |
| | | List<String> result = new ArrayList<>(Arrays.asList(permissionArray)); |
| | | result.remove(Manifest.permission.READ_EXTERNAL_STORAGE); |
| | | //把result转换成数组 |
| | | permissionArray = result.toArray(new String[result.size()]); |
| | | call.onCall(permissionArray, true); |
| | | } else { |
| | | call.onCall(permissionArray, true); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean hasPermissions(Fragment fragment, String[] permissionArray) { |
| | | if (permissionArray == null || fragment == null) return false; |
| | | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
| | | List<String> result = Arrays.asList(permissionArray); |
| | | if (result.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) { |
| | | result.remove(Manifest.permission.READ_EXTERNAL_STORAGE); |
| | | } |
| | | } else { |
| | | return PermissionUtils.isGranted(permissionArray); |
| | | } |
| | | return false; |
| | | } |
| | | } |
| | |
| | | package com.android.app_base.manager; |
| | | |
| | | import android.Manifest; |
| | | import android.app.Activity; |
| | | import android.os.Build; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | |
| | | import com.android.app_base.utils.GlideEngine; |
| | | import com.android.app_base.utils.SPUtils; |
| | | import com.android.app_base.utils.ToastUtils; |
| | | import com.blankj.utilcode.util.PermissionUtils; |
| | | import com.luck.picture.lib.basic.PictureSelector; |
| | | import com.luck.picture.lib.config.SelectMimeType; |
| | | import com.luck.picture.lib.entity.LocalMedia; |
| | | import com.luck.picture.lib.interfaces.OnResultCallbackListener; |
| | | |
| | | import java.io.File; |
| | | import java.util.ArrayList; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | } |
| | | return instance; |
| | | } |
| | | /** |
| | | * 是否有权限 |
| | | */ |
| | | public boolean isGranted(@NonNull String... permissions) { |
| | | return PermissionUtils.isGranted(permissions); |
| | | } |
| | | /** |
| | | * 获取权限 |
| | | */ |
| | | public void getPermissions(PermissionUtils.SimpleCallback simpleCallback, @NonNull String... permissions) { |
| | | if (isGranted(permissions)){ |
| | | simpleCallback.onGranted(); |
| | | return; |
| | | } |
| | | PermissionUtils.permission(permissions).callback(simpleCallback).request(); |
| | | } |
| | | |
| | | /** |
| | | * 选择图片 |
| | | */ |
| | | public void selectImage(Activity activity,int maxSelectNum,OnResultCallbackListener<LocalMedia> onResultCallbackListener){ |
| | | String[] permissions; |
| | | if (Build.VERSION.SDK_INT >= 33) { |
| | | permissions = new String[]{Manifest.permission.READ_MEDIA_IMAGES, Manifest.permission.READ_MEDIA_VIDEO, Manifest.permission.READ_MEDIA_AUDIO, Manifest.permission.CAMERA}; |
| | | }else { |
| | | permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA}; |
| | | } |
| | | getPermissions(new PermissionUtils.SimpleCallback() { |
| | | @Override |
| | | public void onGranted() { |
| | | PictureSelector.create(activity) |
| | | .openGallery(SelectMimeType.ofImage()) |
| | | .setImageEngine(GlideEngine.createGlideEngine()) |
| | | .setPermissionsInterceptListener(new OnPermissionsInterceptListenerImpl()) |
| | | .isMaxSelectEnabledMask(true)// 达到最大选择数是否开启禁选蒙层 |
| | | .setMaxSelectNum(maxSelectNum) |
| | | .forResult(onResultCallbackListener); |
| | | } |
| | | // |
| | | @Override |
| | | public void onDenied() { |
| | | ToastUtils.showShort("请开启相关权限"); |
| | | } |
| | | }, permissions); |
| | | } |
| | | |
| | | |
| | | public void setToken(String token){ |
| | | SPUtils.getInstance("tokenInfo").put("token",token); |
New file |
| | |
| | | package com.android.app_base.utils; |
| | | |
| | | import android.content.Context; |
| | | import android.widget.ImageView; |
| | | |
| | | import com.android.app_base.R; |
| | | import com.bumptech.glide.Glide; |
| | | import com.bumptech.glide.load.resource.bitmap.CenterCrop; |
| | | import com.bumptech.glide.load.resource.bitmap.RoundedCorners; |
| | | import com.luck.picture.lib.engine.ImageEngine; |
| | | import com.luck.picture.lib.utils.ActivityCompatHelper; |
| | | |
| | | public class GlideEngine implements ImageEngine { |
| | | |
| | | /** |
| | | * 加载图片 |
| | | * |
| | | * @param context 上下文 |
| | | * @param url 资源url |
| | | * @param imageView 图片承载控件 |
| | | */ |
| | | @Override |
| | | public void loadImage(Context context, String url, ImageView imageView) { |
| | | if (!ActivityCompatHelper.assertValidRequest(context)) { |
| | | return; |
| | | } |
| | | Glide.with(context) |
| | | .load(url) |
| | | .into(imageView); |
| | | } |
| | | |
| | | @Override |
| | | public void loadImage(Context context, ImageView imageView, String url, int maxWidth, int maxHeight) { |
| | | if (!ActivityCompatHelper.assertValidRequest(context)) { |
| | | return; |
| | | } |
| | | Glide.with(context) |
| | | .load(url) |
| | | .override(maxWidth, maxHeight) |
| | | .into(imageView); |
| | | } |
| | | |
| | | /** |
| | | * 加载相册目录封面 |
| | | * |
| | | * @param context 上下文 |
| | | * @param url 图片路径 |
| | | * @param imageView 承载图片ImageView |
| | | */ |
| | | @Override |
| | | public void loadAlbumCover(Context context, String url, ImageView imageView) { |
| | | if (!ActivityCompatHelper.assertValidRequest(context)) { |
| | | return; |
| | | } |
| | | Glide.with(context) |
| | | .asBitmap() |
| | | .load(url) |
| | | .override(180, 180) |
| | | .sizeMultiplier(0.5f) |
| | | .transform(new CenterCrop(), new RoundedCorners(8)) |
| | | .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder) |
| | | .into(imageView); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 加载图片列表图片 |
| | | * |
| | | * @param context 上下文 |
| | | * @param url 图片路径 |
| | | * @param imageView 承载图片ImageView |
| | | */ |
| | | @Override |
| | | public void loadGridImage(Context context, String url, ImageView imageView) { |
| | | if (!ActivityCompatHelper.assertValidRequest(context)) { |
| | | return; |
| | | } |
| | | Glide.with(context) |
| | | .load(url) |
| | | .override(200, 200) |
| | | .centerCrop() |
| | | .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder) |
| | | .into(imageView); |
| | | } |
| | | |
| | | @Override |
| | | public void pauseRequests(Context context) { |
| | | Glide.with(context).pauseRequests(); |
| | | } |
| | | |
| | | @Override |
| | | public void resumeRequests(Context context) { |
| | | Glide.with(context).resumeRequests(); |
| | | } |
| | | |
| | | private GlideEngine() { |
| | | } |
| | | |
| | | private static final class InstanceHolder { |
| | | static final GlideEngine instance = new GlideEngine(); |
| | | } |
| | | |
| | | public static GlideEngine createGlideEngine() { |
| | | return InstanceHolder.instance; |
| | | } |
| | | } |
New file |
| | |
| | | package com.android.app_base.utils; |
| | | |
| | | import android.content.Context; |
| | | import android.widget.ImageView; |
| | | |
| | | import com.android.app_base.R; |
| | | import com.android.app_base.base.BaseApplication; |
| | | import com.bumptech.glide.Glide; |
| | | import com.bumptech.glide.load.engine.DiskCacheStrategy; |
| | | import com.bumptech.glide.load.resource.bitmap.CenterCrop; |
| | | import com.bumptech.glide.load.resource.bitmap.RoundedCorners; |
| | | import com.bumptech.glide.request.RequestOptions; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.04.02. 23:16 |
| | | * @desc Glide工具类 |
| | | */ |
| | | public class GlideUtil { |
| | | |
| | | /** |
| | | * 加载图片到 ImageView 中 |
| | | * |
| | | * @param imageUrl 图片 URL |
| | | * @param imageView ImageView 对象 |
| | | */ |
| | | public static void loadImage(String imageUrl, ImageView imageView) { |
| | | Glide.with(BaseApplication.getInstance()) |
| | | .load(imageUrl) |
| | | .into(imageView); |
| | | } |
| | | //圆形 |
| | | public static <T> void loadCircleImage(T t, ImageView img) { |
| | | RequestOptions options = new RequestOptions() |
| | | .circleCrop() |
| | | .placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder) |
| | | .error(com.luck.picture.lib.R.drawable.ps_image_placeholder) |
| | | .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate(); |
| | | Glide.with(BaseApplication.getInstance()) |
| | | .load(t) |
| | | .apply(options) |
| | | .into(img); |
| | | } |
| | | |
| | | //圆角 |
| | | public static <T> void loadCornersImage(T t, ImageView img,int radius) { |
| | | Glide.with(BaseApplication.getInstance()) |
| | | .load(t) |
| | | .diskCacheStrategy(DiskCacheStrategy.ALL) |
| | | .dontAnimate() |
| | | .transform(new CenterCrop(),new RoundedCorners(radius)) |
| | | .into (img); |
| | | } |
| | | //透明度 |
| | | public static <T> void loadAlphaImage(T t, ImageView img,float alpha) { |
| | | img.setAlpha(alpha); |
| | | RequestOptions options = new RequestOptions().centerCrop().placeholder(com.luck.picture.lib.R.drawable.ps_image_placeholder) |
| | | .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate(); |
| | | Glide.with(BaseApplication.getInstance()) |
| | | .load(t) |
| | | .apply(options) |
| | | .into (img); |
| | | } |
| | | |
| | | /** |
| | | * 加载视频某时间的帧图片 |
| | | * @param t 视频地址 |
| | | * @param img 加载的控件 |
| | | * @param radius 圆角,不需要传负数 |
| | | * @param frame 需要加载的帧时间,单位微秒 |
| | | * @param <T> |
| | | */ |
| | | public static <T> void loadVideoCover(T t, ImageView img,int radius,int frame) { |
| | | RequestOptions options = new RequestOptions().centerCrop() |
| | | .frame(frame) |
| | | .diskCacheStrategy(DiskCacheStrategy.ALL).dontAnimate(); |
| | | if (radius > 0){ |
| | | RoundedCorners roundedCorners = new RoundedCorners(radius); |
| | | options.bitmapTransform(roundedCorners); |
| | | } |
| | | Glide.with(BaseApplication.getInstance()) |
| | | .load(t) |
| | | .apply(options) |
| | | .into (img); |
| | | } |
| | | |
| | | /** |
| | | * 清除 Glide 缓存 |
| | | * |
| | | * @param context Context 对象 |
| | | */ |
| | | public static void clearCache(Context context) { |
| | | Glide.get(context).clearMemory(); |
| | | new Thread(() -> Glide.get(context).clearDiskCache()).start(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.android.app_base.widget; |
| | | |
| | | import android.content.Context; |
| | | import android.util.AttributeSet; |
| | | import android.view.Gravity; |
| | | |
| | | import androidx.databinding.BindingAdapter; |
| | | import androidx.databinding.BindingMethod; |
| | | |
| | | import com.hjq.bar.TitleBar; |
| | | import com.hjq.bar.TitleBarSupport; |
| | | |
| | | /** |
| | | * @author Ljj |
| | | * @date 2023.03.30. 20:47 |
| | | * @desc 扩展标题栏,在原有标题栏增加标题靠左或靠右的功能 |
| | | */ |
| | | public class ExtendTitleBar extends TitleBar { |
| | | |
| | | private int titleGravity; |
| | | public ExtendTitleBar(Context context) { |
| | | super(context); |
| | | } |
| | | |
| | | public ExtendTitleBar(Context context, AttributeSet attrs) { |
| | | super(context, attrs); |
| | | } |
| | | |
| | | public ExtendTitleBar(Context context, AttributeSet attrs, int defStyleAttr) { |
| | | super(context, attrs, defStyleAttr); |
| | | } |
| | | |
| | | @Override |
| | | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { |
| | | super.onMeasure(widthMeasureSpec, heightMeasureSpec); |
| | | setTitleGravity(titleGravity); |
| | | } |
| | | |
| | | @Override |
| | | public TitleBar setTitleGravity(int gravity) { |
| | | titleGravity = gravity; |
| | | gravity = TitleBarSupport.getAbsoluteGravity(this, gravity); |
| | | LayoutParams params = (LayoutParams) getTitleView().getLayoutParams(); |
| | | params.gravity = gravity; |
| | | // 如果标题的重心为左,那么左边就不能有内容 |
| | | if (gravity == Gravity.LEFT || gravity == Gravity.START){ |
| | | params.setMargins(getLeftView().getMeasuredWidth(),0,0,0); |
| | | } |
| | | |
| | | // 如果标题的重心为右,那么右边就不能有内容 |
| | | if (gravity == Gravity.RIGHT && gravity == Gravity.END){ |
| | | params.setMargins(0,0,0, getRightView().getMeasuredWidth()); |
| | | } |
| | | getTitleView().setLayoutParams(params); |
| | | return this; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.android.app_base.widget; |
| | | |
| | | import android.graphics.Rect; |
| | | import android.view.View; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.recyclerview.widget.RecyclerView; |
| | | |
| | | /** |
| | | * RecyclerView 网格item等分间距 |
| | | */ |
| | | public class GridSpaceItemDecoration extends RecyclerView.ItemDecoration { |
| | | private int mSpanCount;//横条目数量 |
| | | private int mRowSpacing;//行间距 |
| | | private int mColumnSpacing;// 列间距 |
| | | |
| | | /** |
| | | * @param spanCount 列数 |
| | | * @param rowSpacing 行间距 |
| | | * @param columnSpacing 列间距 |
| | | */ |
| | | public GridSpaceItemDecoration(int spanCount, int rowSpacing, int columnSpacing) { |
| | | this.mSpanCount = spanCount; |
| | | this.mRowSpacing = rowSpacing; |
| | | this.mColumnSpacing = columnSpacing; |
| | | } |
| | | |
| | | @Override |
| | | public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { |
| | | int position = parent.getChildAdapterPosition(view); // 获取view 在adapter中的位置。 |
| | | int column = position % mSpanCount; // view 所在的列 |
| | | |
| | | //列间等间距(列数从0开始) |
| | | //列左边 = 所在列 * 列间距 / 总列数 |
| | | //列右边 = 列间距 - 下一列的列左边 |
| | | outRect.left = column * mColumnSpacing / mSpanCount; |
| | | outRect.right = mColumnSpacing - (column + 1) * mColumnSpacing / mSpanCount; |
| | | |
| | | |
| | | if (mRowSpacing == -1) { |
| | | return; |
| | | } |
| | | // 如果position > 行数,说明不是在第一行,则不指定行高,其他行的上间距为 top=mRowSpacing |
| | | if (position >= mSpanCount) { |
| | | outRect.top = mRowSpacing; // item top |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.android.app_base.widget; |
| | | |
| | | import android.content.Context; |
| | | import android.util.AttributeSet; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.view.ViewParent; |
| | | |
| | | import androidx.annotation.LayoutRes; |
| | | import androidx.annotation.NonNull; |
| | | import androidx.annotation.Nullable; |
| | | import androidx.recyclerview.widget.GridLayoutManager; |
| | | import androidx.recyclerview.widget.RecyclerView; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * 支持添加底部和头部的 RecyclerView |
| | | */ |
| | | public final class WrapRecyclerView extends RecyclerView { |
| | | |
| | | /** |
| | | * 原有的适配器 |
| | | */ |
| | | private Adapter mRealAdapter; |
| | | |
| | | /** |
| | | * 支持添加头部和底部的适配器 |
| | | */ |
| | | private final WrapRecyclerAdapter mWrapAdapter = new WrapRecyclerAdapter(); |
| | | |
| | | public WrapRecyclerView(Context context) { |
| | | super(context); |
| | | } |
| | | |
| | | public WrapRecyclerView(Context context, @Nullable AttributeSet attrs) { |
| | | super(context, attrs); |
| | | } |
| | | |
| | | public WrapRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { |
| | | super(context, attrs, defStyle); |
| | | } |
| | | |
| | | @Override |
| | | public void setAdapter(Adapter adapter) { |
| | | mRealAdapter = adapter; |
| | | // 偷梁换柱 |
| | | mWrapAdapter.setRealAdapter(mRealAdapter); |
| | | // 禁用条目动画 |
| | | setItemAnimator(null); |
| | | super.setAdapter(mWrapAdapter); |
| | | } |
| | | |
| | | @Override |
| | | public Adapter getAdapter() { |
| | | return mRealAdapter; |
| | | } |
| | | |
| | | /** |
| | | * 添加头部View |
| | | */ |
| | | public void addHeaderView(View view) { |
| | | mWrapAdapter.addHeaderView(view); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public <V extends View> V addHeaderView(@LayoutRes int id) { |
| | | View headerView = LayoutInflater.from(getContext()).inflate(id, this, false); |
| | | addHeaderView(headerView); |
| | | return (V) headerView; |
| | | } |
| | | |
| | | /** |
| | | * 移除头部View |
| | | */ |
| | | public void removeHeaderView(View view) { |
| | | mWrapAdapter.removeHeaderView(view); |
| | | } |
| | | |
| | | /** |
| | | * 添加底部View |
| | | */ |
| | | public void addFooterView(View view) { |
| | | mWrapAdapter.addFooterView(view); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | public <V extends View> V addFooterView(@LayoutRes int id) { |
| | | View footerView = LayoutInflater.from(getContext()).inflate(id, this, false); |
| | | addFooterView(footerView); |
| | | return (V) footerView; |
| | | } |
| | | |
| | | /** |
| | | * 移除底部View |
| | | */ |
| | | public void removeFooterView(View view) { |
| | | mWrapAdapter.removeFooterView(view); |
| | | } |
| | | |
| | | /** |
| | | * 获取头部View总数 |
| | | */ |
| | | public int getHeaderViewsCount() { |
| | | return mWrapAdapter.getHeaderViewsCount(); |
| | | } |
| | | |
| | | /** |
| | | * 获取底部View总数 |
| | | */ |
| | | public int getFooterViewsCount() { |
| | | return mWrapAdapter.getFooterViewsCount(); |
| | | } |
| | | |
| | | /** |
| | | * 获取头部View集合 |
| | | */ |
| | | public List<View> getHeaderViews() { |
| | | return mWrapAdapter.getHeaderViews(); |
| | | } |
| | | |
| | | /** |
| | | * 获取底部View集合 |
| | | */ |
| | | public List<View> getFooterViews() { |
| | | return mWrapAdapter.getFooterViews(); |
| | | } |
| | | |
| | | /** |
| | | * 刷新头部和底部布局所有的 View 的状态 |
| | | */ |
| | | public void refreshHeaderFooterViews() { |
| | | mWrapAdapter.notifyDataSetChanged(); |
| | | } |
| | | |
| | | /** |
| | | * 设置在 GridLayoutManager 模式下头部和尾部都是独占一行的效果 |
| | | */ |
| | | public void adjustSpanSize() { |
| | | |
| | | final LayoutManager layoutManager = getLayoutManager(); |
| | | if (layoutManager instanceof GridLayoutManager) { |
| | | ((GridLayoutManager) layoutManager).setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { |
| | | |
| | | @Override |
| | | public int getSpanSize(int position) { |
| | | return (position < mWrapAdapter.getHeaderViewsCount() |
| | | || position >= mWrapAdapter.getHeaderViewsCount() + (mRealAdapter == null ? 0 : mRealAdapter.getItemCount())) |
| | | ? ((GridLayoutManager) layoutManager).getSpanCount() : 1; |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 采用装饰设计模式,将原有的适配器包装起来 |
| | | */ |
| | | private static final class WrapRecyclerAdapter extends Adapter<ViewHolder> { |
| | | |
| | | /** |
| | | * 头部条目类型 |
| | | */ |
| | | private static final int HEADER_VIEW_TYPE = Integer.MIN_VALUE >> 1; |
| | | /** |
| | | * 底部条目类型 |
| | | */ |
| | | private static final int FOOTER_VIEW_TYPE = Integer.MAX_VALUE >> 1; |
| | | |
| | | /** |
| | | * 原有的适配器 |
| | | */ |
| | | private Adapter mRealAdapter; |
| | | /** |
| | | * 头部View集合 |
| | | */ |
| | | private final List<View> mHeaderViews = new ArrayList<>(); |
| | | /** |
| | | * 底部View集合 |
| | | */ |
| | | private final List<View> mFooterViews = new ArrayList<>(); |
| | | /** |
| | | * 当前调用的位置 |
| | | */ |
| | | private int mCurrentPosition; |
| | | |
| | | /** |
| | | * RecyclerView对象 |
| | | */ |
| | | private RecyclerView mRecyclerView; |
| | | |
| | | /** |
| | | * 数据观察者对象 |
| | | */ |
| | | private WrapAdapterDataObserver mObserver; |
| | | |
| | | private void setRealAdapter(Adapter adapter) { |
| | | if (mRealAdapter != adapter) { |
| | | |
| | | if (mRealAdapter != null) { |
| | | if (mObserver != null) { |
| | | // 为原有的RecyclerAdapter移除数据监听对象 |
| | | mRealAdapter.unregisterAdapterDataObserver(mObserver); |
| | | } |
| | | } |
| | | |
| | | mRealAdapter = adapter; |
| | | if (mRealAdapter != null) { |
| | | if (mObserver == null) { |
| | | mObserver = new WrapAdapterDataObserver(this); |
| | | } |
| | | // 为原有的RecyclerAdapter添加数据监听对象 |
| | | mRealAdapter.registerAdapterDataObserver(mObserver); |
| | | // 适配器不是第一次被绑定到RecyclerView上需要发送通知,因为第一次绑定会自动通知 |
| | | if (mRecyclerView != null) { |
| | | notifyDataSetChanged(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public int getItemCount() { |
| | | if (mRealAdapter != null) { |
| | | return getHeaderViewsCount() + mRealAdapter.getItemCount() + getFooterViewsCount(); |
| | | } else { |
| | | return getHeaderViewsCount() + getFooterViewsCount(); |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("all") |
| | | @Override |
| | | public int getItemViewType(int position) { |
| | | mCurrentPosition = position; |
| | | // 获取头部布局的总数 |
| | | int headerCount = getHeaderViewsCount(); |
| | | // 获取原有适配器的总数 |
| | | int adapterCount = mRealAdapter != null ? mRealAdapter.getItemCount() : 0; |
| | | // 获取在原有适配器上的位置 |
| | | int adjPosition = position - headerCount; |
| | | if (position < headerCount) { |
| | | return HEADER_VIEW_TYPE; |
| | | } else if (adjPosition < adapterCount) { |
| | | return mRealAdapter.getItemViewType(adjPosition); |
| | | } else { |
| | | return FOOTER_VIEW_TYPE; |
| | | } |
| | | } |
| | | |
| | | public int getPosition() { |
| | | return mCurrentPosition; |
| | | } |
| | | |
| | | @SuppressWarnings("all") |
| | | @Override |
| | | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { |
| | | switch (viewType) { |
| | | case HEADER_VIEW_TYPE: |
| | | return newWrapViewHolder(mHeaderViews.get(getPosition())); |
| | | case FOOTER_VIEW_TYPE: |
| | | return newWrapViewHolder(mFooterViews.get(getPosition() - getHeaderViewsCount() - (mRealAdapter != null ? mRealAdapter.getItemCount() : 0))); |
| | | default: |
| | | int itemViewType = mRealAdapter.getItemViewType(getPosition() - getHeaderViewsCount()); |
| | | if (itemViewType == HEADER_VIEW_TYPE || itemViewType == FOOTER_VIEW_TYPE) { |
| | | throw new IllegalStateException("Please do not use this type as itemType"); |
| | | } |
| | | if (mRealAdapter != null) { |
| | | return mRealAdapter.onCreateViewHolder(parent, itemViewType); |
| | | } else { |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { |
| | | int viewType = getItemViewType(position); |
| | | switch (viewType) { |
| | | case HEADER_VIEW_TYPE: |
| | | case FOOTER_VIEW_TYPE: |
| | | break; |
| | | default: |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onBindViewHolder(holder, getPosition() - getHeaderViewsCount()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | private WrapViewHolder newWrapViewHolder(View view) { |
| | | ViewParent parent = view.getParent(); |
| | | if (parent instanceof ViewGroup) { |
| | | // IllegalStateException: ViewHolder views must not be attached when created. |
| | | // Ensure that you are not passing 'true' to the attachToRoot parameter of LayoutInflater.inflate(..., boolean attachToRoot) |
| | | ((ViewGroup) parent).removeView(view); |
| | | } |
| | | return new WrapViewHolder(view); |
| | | } |
| | | |
| | | @Override |
| | | public long getItemId(int position) { |
| | | if (mRealAdapter != null && position > getHeaderViewsCount() - 1 && position < getHeaderViewsCount() + mRealAdapter.getItemCount()) { |
| | | return mRealAdapter.getItemId(position - getHeaderViewsCount()); |
| | | } else { |
| | | return super.getItemId(position); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { |
| | | mRecyclerView = recyclerView; |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onAttachedToRecyclerView(recyclerView); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onDetachedFromRecyclerView(@NonNull RecyclerView recyclerView) { |
| | | mRecyclerView = null; |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onDetachedFromRecyclerView(recyclerView); |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public void onViewRecycled(@NonNull ViewHolder holder) { |
| | | if (holder instanceof WrapViewHolder) { |
| | | // 防止这个 ViewHolder 被 RecyclerView 拿去复用 |
| | | holder.setIsRecyclable(false); |
| | | return; |
| | | } |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onViewRecycled(holder); |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public boolean onFailedToRecycleView(@NonNull ViewHolder holder) { |
| | | if (mRealAdapter != null) { |
| | | return mRealAdapter.onFailedToRecycleView(holder); |
| | | } |
| | | return super.onFailedToRecycleView(holder); |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public void onViewAttachedToWindow(@NonNull ViewHolder holder) { |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onViewAttachedToWindow(holder); |
| | | } |
| | | } |
| | | |
| | | @SuppressWarnings("unchecked") |
| | | @Override |
| | | public void onViewDetachedFromWindow(@NonNull ViewHolder holder) { |
| | | if (mRealAdapter != null) { |
| | | mRealAdapter.onViewDetachedFromWindow(holder); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加头部View |
| | | */ |
| | | private void addHeaderView(View view) { |
| | | // 不能添加同一个View对象,否则会导致RecyclerView复用异常 |
| | | if (!mHeaderViews.contains(view) && !mFooterViews.contains(view)) { |
| | | mHeaderViews.add(view); |
| | | notifyDataSetChanged(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 移除头部View |
| | | */ |
| | | private void removeHeaderView(View view) { |
| | | if (mHeaderViews.remove(view)) { |
| | | notifyDataSetChanged(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加底部View |
| | | */ |
| | | private void addFooterView(View view) { |
| | | // 不能添加同一个View对象,否则会导致RecyclerView复用异常 |
| | | if (!mFooterViews.contains(view) && !mHeaderViews.contains(view)) { |
| | | mFooterViews.add(view); |
| | | notifyDataSetChanged(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 移除底部View |
| | | */ |
| | | private void removeFooterView(View view) { |
| | | if (mFooterViews.remove(view)) { |
| | | notifyDataSetChanged(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 获取头部View总数 |
| | | */ |
| | | private int getHeaderViewsCount() { |
| | | return mHeaderViews.size(); |
| | | } |
| | | |
| | | /** |
| | | * 获取底部View总数 |
| | | */ |
| | | private int getFooterViewsCount() { |
| | | return mFooterViews.size(); |
| | | } |
| | | |
| | | /** |
| | | * 获取头部View集合 |
| | | */ |
| | | private List<View> getHeaderViews() { |
| | | return mHeaderViews; |
| | | } |
| | | |
| | | /** |
| | | * 获取底部View集合 |
| | | */ |
| | | private List<View> getFooterViews() { |
| | | return mFooterViews; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 头部和底部通用的ViewHolder对象 |
| | | */ |
| | | private static final class WrapViewHolder extends ViewHolder { |
| | | |
| | | private WrapViewHolder(View itemView) { |
| | | super(itemView); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 数据改变监听器 |
| | | */ |
| | | private static final class WrapAdapterDataObserver extends AdapterDataObserver { |
| | | |
| | | private final WrapRecyclerAdapter mWrapAdapter; |
| | | |
| | | private WrapAdapterDataObserver(WrapRecyclerAdapter adapter) { |
| | | mWrapAdapter = adapter; |
| | | } |
| | | |
| | | @Override |
| | | public void onChanged() { |
| | | mWrapAdapter.notifyDataSetChanged(); |
| | | } |
| | | |
| | | @Override |
| | | public void onItemRangeChanged(int positionStart, int itemCount, Object payload) { |
| | | onItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount); |
| | | } |
| | | |
| | | @Override |
| | | public void onItemRangeChanged(int positionStart, int itemCount) { |
| | | mWrapAdapter.notifyItemRangeChanged(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount); |
| | | } |
| | | |
| | | @Override |
| | | public void onItemRangeInserted(int positionStart, int itemCount) { |
| | | mWrapAdapter.notifyItemRangeInserted(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount); |
| | | } |
| | | |
| | | @Override |
| | | public void onItemRangeRemoved(int positionStart, int itemCount) { |
| | | mWrapAdapter.notifyItemRangeRemoved(mWrapAdapter.getHeaderViewsCount() + positionStart, itemCount); |
| | | } |
| | | |
| | | @Override |
| | | public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { |
| | | mWrapAdapter.notifyItemMoved(mWrapAdapter.getHeaderViewsCount() + fromPosition, toPosition); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_gravity="center" |
| | | android:gravity="center" |
| | | android:orientation="vertical" |
| | | app:cardBackgroundColor="#D9000000" |
| | | app:cardCornerRadius="@dimen/dp_15" |
| | | app:cardElevation="0px" |
| | | > |
| | | |
| | | <LinearLayout |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:gravity="center" |
| | | android:minWidth="@dimen/dp_110" |
| | | android:minHeight="@dimen/dp_110" |
| | | android:orientation="vertical" |
| | | android:padding="@dimen/dp_10"> |
| | | |
| | | <com.airbnb.lottie.LottieAnimationView |
| | | android:layout_width="@dimen/dp_70" |
| | | android:layout_height="@dimen/dp_70" |
| | | app:lottie_autoPlay="true" |
| | | app:lottie_loop="true" |
| | | app:lottie_rawRes="@raw/progress" /> |
| | | |
| | | <TextView |
| | | android:id="@+id/tv_wait_message" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:layout_marginHorizontal="@dimen/dp_15" |
| | | android:layout_marginTop="@dimen/dp_5" |
| | | android:maxLines="3" |
| | | android:text="加载中.." |
| | | android:textColor="#FFFFFF" |
| | | android:textSize="@dimen/sp_14" /> |
| | | </LinearLayout> |
| | | |
| | | </androidx.cardview.widget.CardView> |
New file |
| | |
| | | {"v":"5.5.8","fr":50,"ip":0,"op":147,"w":800,"h":600,"nm":"Paperplane","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"planete Outlines - Group 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":38,"s":[50]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":88,"s":[50]},{"t":120,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[468.336,323.378,0],"to":[-29,0,0],"ti":[29,0,0]},{"t":102,"s":[294.336,323.378,0]}],"ix":2},"a":{"a":0,"k":[453.672,304.756,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[6.742,0],[0.741,-0.14],[0,0.074],[13.484,0],[1.669,-0.361],[19.79,0],[3.317,-19.082],[2.691,0],[0,-13.484],[-0.048,-0.629],[2.405,0],[0,-6.742],[-6.742,0],[0,0],[0,6.743]],"o":[[-0.781,0],[0.001,-0.074],[0,-13.484],[-1.778,0],[-3.594,-18.742],[-20.03,0],[-2.421,-0.804],[-13.485,0],[0,0.642],[-1.89,-1.199],[-6.742,0],[0,6.743],[0,0],[6.742,0],[0,-6.742]],"v":[[75.134,16.175],[72.85,16.396],[72.856,16.175],[48.44,-8.241],[43.262,-7.685],[3.406,-40.591],[-36.571,-6.995],[-44.269,-8.241],[-68.685,16.175],[-68.604,18.079],[-75.133,16.175],[-87.341,28.383],[-75.133,40.592],[75.134,40.592],[87.342,28.383]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.815686334348,0.823529471603,0.827451040231,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[453.672,304.756],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Merged Shape Layer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.547],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.845],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":77,"s":[35]},{"t":150,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[390.319,298.2,0],"to":[0,-2.583,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":44,"s":[390.319,282.7,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[390.319,319.25,0],"to":[0,0,0],"ti":[0,0,0]},{"t":150,"s":[390.319,298.2,0]}],"ix":2},"a":{"a":0,"k":[664.319,256.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[18.967,-3.189],[-18.967,19.935],[-0.949,-19.935]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.223528981209,0.192156970501,0.674510002136,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[236.879,292.737],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[633.939,275.369],"ix":2},"a":{"a":0,"k":[236.879,292.737],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-98.335,64.79],[-105.619,4.984],[105.619,-64.79],[-80.316,24.919]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.278430998325,0.294117987156,0.847059011459,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[316.247,247.882],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[673.623,252.941],"ix":2},"a":{"a":0,"k":[316.247,247.882],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 2","np":1,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-133.812,-42.171],[133.812,-75.141],[5.765,75.141],[-61.708,18.402],[124.227,-71.307],[-87.011,-1.534]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.365000009537,0.407999992371,0.976000010967,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[297.638,254.4],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tr","p":{"a":0,"k":[664.319,256.2],"ix":2},"a":{"a":0,"k":[297.638,254.4],"ix":1},"s":{"a":0,"k":[50,50],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"planete Outlines - Group 3","np":1,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"planete Outlines - Group 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":102,"s":[100]},{"t":150,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[327.38,267.583,0],"to":[25.833,0,0],"ti":[-25.833,0,0]},{"t":150,"s":[482.38,267.583,0]}],"ix":2},"a":{"a":0,"k":[171.76,193.166,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[13.485,0],[4.38,-4.171],[21.913,0],[3.575,-18.765],[1.851,0],[0,-13.484],[-0.011,-0.291],[1.599,0],[0,-6.743],[-6.742,0],[0,0],[0,13.485]],"o":[[-6.526,0],[-0.793,-21.719],[-19.806,0],[-1.734,-0.391],[-13.485,0],[0,0.293],[-1.4,-0.559],[-6.742,0],[0,6.742],[0,0],[13.485,0],[0,-13.484]],"v":[[59.669,-8.242],[42.84,-1.506],[2.287,-40.592],[-37.576,-7.638],[-42.962,-8.242],[-67.378,16.174],[-67.356,17.049],[-71.878,16.174],[-84.086,28.383],[-71.878,40.591],[59.669,40.591],[84.086,16.174]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.816000007181,0.823999980852,0.827000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[171.76,193.166],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":151,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Pre-comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[406,306,0],"ix":2},"a":{"a":0,"k":[400,300,0],"ix":1},"s":{"a":0,"k":[179,179,100],"ix":6}},"ao":0,"w":800,"h":600,"ip":0,"op":147,"st":0,"bm":0}],"markers":[]} |
New file |
| | |
| | | {"v":"4.6.9","fr":30,"ip":0,"op":45,"w":200,"h":200,"nm":"Composition 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"LFCalque de forme 2","ks":{"o":{"a":0,"k":100},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[1],"y":[0]},"n":["0p833_0p833_1_0"],"t":0,"s":[0],"e":[360]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":15,"s":[360],"e":[510]},{"t":34}]},"p":{"a":0,"k":[100,100,0]},"a":{"a":0,"k":[-93.098,-93.098,0]},"s":{"a":0,"k":[80,80,100]}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.228,0],[0,-55.228],[-55.228,0],[0,55.228]],"o":[[-55.228,0],[0,55.228],[55.228,0],[0,-55.228]],"v":[[0,-100],[-100,0],[0,100],[100,0]],"c":true}},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group"},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"n":["0_1_0p167_0p167"],"t":23,"s":[100],"e":[42]},{"t":45}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":0,"s":[98],"e":[98]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":6,"s":[98],"e":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":13,"s":[60],"e":[40]},{"t":23}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Raccorder les tracés 1","mn":"ADBE Vector Filter - Trim"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":5},"lc":2,"lj":2,"nm":"Contour 1","mn":"ADBE Vector Graphic - Stroke"},{"ty":"tr","p":{"a":0,"k":[-93.098,-93.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Ellipse 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group"}],"ip":0,"op":45,"st":0,"bm":0,"sr":1}],"chars":[],"markers":[]} |
New file |
| | |
| | | {"v":"5.5.2","fr":30,"ip":0,"op":136,"w":976,"h":671,"nm":"Hi Animation","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"h path 2 Outlines 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[987.04,469.648,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,54.658]],"v":[[-99.143,-243.983],[-99.574,119.373],[-98.794,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[0]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[32]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[32.748]},{"t":105,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.36],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":41,"s":[55.4]},{"i":{"x":[0.627],"y":[-2.176]},"o":{"x":[0.289],"y":[0]},"t":60,"s":[94.4]},{"i":{"x":[0.693],"y":[0.768]},"o":{"x":[0.281],"y":[-0.012]},"t":97,"s":[96.608]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"h path 2 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,449.5,0],"ix":2},"a":{"a":0,"k":[154.5,299.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-54.658,0],[0,54.658]],"o":[[0,0],[0,0],[0,54.658],[54.66,0],[0,0]],"v":[[-99.143,-243.983],[-99.143,142.703],[-98.794,145.015],[0.174,243.983],[99.143,145.015]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":1,"ml":10,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.325,299.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[96]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.64],"y":[0]},"t":60,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.24],"y":[1]},"o":{"x":[0.76],"y":[0]},"t":0,"s":[98]},{"i":{"x":[0.675],"y":[-2.679]},"o":{"x":[0.342],"y":[0]},"t":60,"s":[55.4]},{"i":{"x":[0.675],"y":[0.696]},"o":{"x":[0.37],"y":[-0.022]},"t":97,"s":[56.806]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"h path 1 Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[749.5,447.5,0],"ix":2},"a":{"a":0,"k":[154.5,202.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[54.659,0],[0,-54.658],[0,0]],"o":[[0,0],[0,0],[0,-54.658],[-54.658,0],[0,0],[0,0]],"v":[[98.969,147.132],[98.969,51.627],[98.969,51.868],[-0.001,-47.101],[-98.969,51.868],[-98.969,-147.132]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":22,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[154.5,202.632],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"tm","s":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[68]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.292]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.26],"y":[0]},"t":64,"s":[0]},{"t":97,"s":[0]}],"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.74],"y":[1]},"o":{"x":[0.4],"y":[0.8]},"t":0,"s":[65]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.114],"y":[0.399]},"t":15,"s":[100]},{"i":{"x":[0.657],"y":[-9.391]},"o":{"x":[0.323],"y":[0]},"t":64,"s":[67.4]},{"i":{"x":[0.683],"y":[0.716]},"o":{"x":[0.281],"y":[-0.009]},"t":97,"s":[67.703]},{"t":105,"s":[0]}],"ix":2},"o":{"a":0,"k":0,"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false}],"ip":0,"op":1950,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Hi files","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[473.436,364,0],"ix":2},"a":{"a":0,"k":[750,500,0],"ix":1},"s":{"a":0,"k":[108,108,100],"ix":6}},"ao":0,"w":1500,"h":1000,"ip":29,"op":136,"st":29,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Shape Layer 4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":3,"s":[498.378,416.11,0],"to":[0,7.167,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.609},"o":{"x":0.54,"y":0},"t":12,"s":[498.378,459.11,0],"to":[0,0,0],"ti":[1.844,44.19,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.54,"y":0},"t":19,"s":[498.378,416.11,0],"to":[19.917,-49.917,0],"ti":[-20.594,42.719,0]},{"t":35,"s":[621.94,159.798,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.335,1.335,0]},"t":21,"s":[55.407,55.407,100]},{"t":35,"s":[10.1,10.1,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.845751594095,0.012161032359,0.012161032359,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":130,"st":3,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Shape Layer 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.504},"t":4,"s":[521.864,548.108,0],"to":[0,9,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.608},"o":{"x":0.54,"y":0},"t":13,"s":[521.864,602.108,0],"to":[0,0,0],"ti":[2.053,34.822,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.301,"y":1},"t":20,"s":[521.864,548.108,0],"to":[9.4,-19.933,0],"ti":[-9.4,10.933,0]},{"t":35,"s":[578.264,482.508,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[53,53,100]},{"t":35,"s":[11,11,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078431373,0.733333333333,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":4,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Shape Layer 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.999,"y":0.496},"o":{"x":0.001,"y":0.504},"t":6,"s":[575.274,318.062,0],"to":[0,6.833,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":0.619},"o":{"x":0.54,"y":0},"t":15,"s":[575.274,359.062,0],"to":[0,0,0],"ti":[-9.167,15.167,0]},{"i":{"x":0.16,"y":1},"o":{"x":0.27,"y":1},"t":22,"s":[575.274,318.062,0],"to":[9.167,-15.167,0],"ti":[-9.167,8.333,0]},{"t":35,"s":[630.274,268.062,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[35,35,100]},{"t":35,"s":[12.2,12.2,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.182193397073,0.579084927428,0.000757008265,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":6,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Shape Layer 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.46,"y":1},"o":{"x":0.001,"y":0.56},"t":0,"s":[324.44,338.069,0],"to":[0,5.167,0],"ti":[-0.191,0.573,0]},{"i":{"x":0.999,"y":0.496},"o":{"x":0.54,"y":0},"t":10,"s":[324.44,369.069,0],"to":[0.191,-0.573,0],"ti":[-1.576,28.726,0]},{"i":{"x":0.999,"y":0.953},"o":{"x":0.54,"y":0},"t":20,"s":[325.585,334.633,0],"to":[49.678,18.231,0],"ti":[-49.487,-23.97,0]},{"t":29,"s":[622.507,478.452,0]}],"ix":2},"a":{"a":0,"k":[-144.56,-34.931,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.16,0.16,0.16],"y":[1,1,1]},"o":{"x":[0.4,0.4,0.4],"y":[1.4,1.4,0]},"t":21,"s":[100,100,100]},{"t":35,"s":[10.5,10.5,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[355.037,355.037],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"fl","c":{"a":0,"k":[0.207843137255,0.517647058824,0.964705882353,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-144.56,-34.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[62.211,62.211],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":36,"st":0,"bm":0}],"markers":[]} |