1、修复新增家庭设备时存在备忘录问题\n2、旅游模块新增加“感言”、“其他费用”、“备注”字段
10个文件已修改
1个文件已添加
1个文件已删除
228 ■■■■ 已修改文件
.idea/deploymentTargetDropDown.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/TourismBean.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/bean/TourismExperienceBean.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/application/zhangshi_app_android/widget/Node.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/acitivity_tourism_experience_detail.xml 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_tourism_detail.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_tourism_experience.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/zhangshiappwithca.keystore.jks 补丁 | 查看 | 原始文档 | blame | 历史
gradle.properties 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/deploymentTargetDropDown.xml
File was deleted
app/build.gradle
@@ -8,8 +8,8 @@
        applicationId "com.application.zhangshi_app_android"
        minSdk 24
        targetSdk 33
        versionCode 7
        versionName "1.0.6"
        versionCode 8
        versionName "1.0.7"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk {
            //APP的build.gradle设置支持的SO库架构
@@ -48,6 +48,13 @@
        dataBinding = true
        viewBinding true
    }
    android.applicationVariants.all { variant ->
        variant.outputs.all {
            def createTime = new Date().format("YYYYMMdd", TimeZone.getTimeZone("GMT+08:00"))
            def fileName = "Bendudu${createTime}.apk"
            outputFileName = fileName
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
app/src/main/java/com/application/zhangshi_app_android/bean/TourismBean.java
@@ -38,6 +38,8 @@
    private double groupTotal;
    //总金额
    private double totalPrice;
    //感言
    private String spee;
    public String getId() {
        return id;
@@ -150,4 +152,12 @@
    public void setTotalPrice(double totalPrice) {
        this.totalPrice = totalPrice;
    }
    public String getSpee() {
        return spee;
    }
    public void setSpee(String spee) {
        this.spee = spee;
    }
}
app/src/main/java/com/application/zhangshi_app_android/bean/TourismExperienceBean.java
@@ -28,6 +28,10 @@
    private double eat;
    //交通费
    private double travel;
    //其他费用
    private double otherCost;
    //备注
    private String backInfo;
    //电子文件
    private String url;
    //出行方式
@@ -148,4 +152,20 @@
    public void setScenic(String scenic) {
        this.scenic = scenic;
    }
    public double getOtherCost() {
        return otherCost;
    }
    public void setOtherCost(double otherCost) {
        this.otherCost = otherCost;
    }
    public String getBackInfo() {
        return backInfo;
    }
    public void setBackInfo(String backInfo) {
        this.backInfo = backInfo;
    }
}
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivity.java
@@ -278,8 +278,11 @@
    @Override
    public void initData() {
        // 新增不需要获取备忘录
        if (type != 1){
        viewModel.getMemos();
    }
    }
    @Override
    public void initLiveDataObserve() {
app/src/main/java/com/application/zhangshi_app_android/ui/function/HomeDevicesDetailActivityViewModel.java
@@ -7,6 +7,7 @@
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;
@@ -335,7 +336,7 @@
        if (beanLiveData.getValue() == null) {
            return;
        }
        model.getMemos("2017", String.valueOf(beanLiveData.getValue().getId()))
        model.getMemos(BaseConfig.MEMO_FID_HOME_DEVICES+"", String.valueOf(beanLiveData.getValue().getId()))
                .compose(RxUtils.schedulersTransformer())
                .subscribe(new Observer<ResultData<List<MemoBean>>>() {
                    @Override
app/src/main/java/com/application/zhangshi_app_android/widget/Node.java
@@ -96,7 +96,7 @@
        if (this.parent!=null){
            throw new RuntimeException("只能初始化根节点");
        }
        //根据可见性找到最后一个第一子节点,即最上边的节点
        //根据可见性找到最后一个第一子节点,即最右上边的节点
        setViewPositionRecursion(getVisibleTopNode(), this,x,y);
    }
@@ -116,12 +116,17 @@
        }
        //因为 y 是整颗节点树的y坐标,正常情况下,y都会是 顶部节点topNode 的y坐标
        //但是 有一种情况,就是顶部节点topNode刚好是根节点rootNode的唯一子节点,且topNode没有配偶,此时topNode的高度比rootNode的高度小,所以此时的y是rootNode的y坐标
        int centerY;
        if (rootNode.height >= topNode.height && rootNode == topNode.parent && rootNode.children.size() == 1){
            centerY = y + rootNode.getAllVisibleHeight()/2;
        }else {
            centerY = y + topNode.getAllVisibleHeight()/2;
        int centerY = y + topNode.getAllVisibleHeight()/2;
        //但是 有一种情况,就是顶部节点topNode没有配偶,如果topNode的祖先节点有配偶,且没有多子孙,此时topNode的高度比有配偶的祖先节点的高度小,所以此时的y是高度最高的祖先节点的y坐标
        if (topNode instanceof SimpleNode){
            Node tempNode = topNode.parent;
            while (tempNode.children.size() == 1){
                if (tempNode.height > topNode.height){
                    centerY = y + tempNode.getAllVisibleHeight()/2;
                    break;
                }
                tempNode = tempNode.parent;
            }
        }
        topNode.setViewPosition(x + topNode.getToSpecifyNodeWidth(rootNode) - topNode.width, centerY);
        // 根据topNode的位置,递归设置所有节点的位置
@@ -133,7 +138,7 @@
            for (Node child : parentNode.children) {
                if (child == node) {
                    centerYList.add(child.centerY);
                    currentBottom = currentBottom + node.getVisibleTopNode().top + node.getAllVisibleHeight();
                    currentBottom = currentBottom + child.getVisibleTop() + child.getAllVisibleHeight();
                    continue;
                }
                if (!child.isVisible){
@@ -148,7 +153,7 @@
            //取最大值、最小值 和 的中间
            int totalCenterY = 0;
            if (centerYList.size() > 0) {
            if (centerYList.size() > 1) {
                int min = centerYList.get(0);
                int max = centerYList.get(0);
                for (int i = 1; i < centerYList.size(); i++) {
@@ -161,6 +166,8 @@
                    }
                }
                totalCenterY = (min + max) / 2;
            }else{
                totalCenterY = centerYList.get(0);
            }
            if (parentNode.children.size() > 1) {
@@ -174,7 +181,21 @@
            node = parentNode;
        }
    }
    //获取 以当前节点为根节点的树 的最顶部的y坐标
    public int getVisibleTop(){
        if (!isVisible){
            return 0;
        }
        if (!isExpand){
            return top;
        }
        if (children.size() > 0){
            return Math.min(top,children.get(0).getVisibleTop());
        }
        return top;
    }
    //获取 以当前节点为根节点的树 的最深一节点
    public Node getVisibleTopNode(){
        Node topNode;
        if (!isVisible){
@@ -420,10 +441,12 @@
        }else {
            int heightSum = 0;
            for (Node child : node.children) {
                if (getNodeTreeHeightRecursion(child,considerVisible)!=0){
                int childHeight = getNodeTreeHeightRecursion(child,considerVisible);
                //如果有多个子节点且子节点有高度,那么子节点之间还有竖直间隔
                if (node.children.size() > 1 && childHeight > 0){
                    heightSum += verticalMargin;
                }
                heightSum += getNodeTreeHeightRecursion(child,considerVisible);
                heightSum += childHeight;
            }
            //子节点每两个之间还有竖直间隔
            return Math.max(node.height,heightSum);
app/src/main/res/layout/acitivity_tourism_experience_detail.xml
@@ -267,6 +267,69 @@
                    </LinearLayout>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="12dp"
                    >
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:orientation="vertical"
                        >
                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="其他费用"
                            android:textColor="#767375"
                            android:textSize="12sp"
                            />
                        <EditText
                            android:id="@+id/et_other"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:inputType="numberDecimal"
                            android:textColorHint="#6b000000"
                            android:textColor="#DE000000"
                            android:text="@={viewModel.beanLiveData.otherCost}"
                            android:hint="0"
                            app:need_modify_null="@{true}"
                            android:textSize="16sp"
                            android:maxLines="1"
                            android:enabled="@{viewModel.typeLiveData}"
                            />
                    </LinearLayout>
                    <LinearLayout
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:orientation="vertical"
                        android:layout_marginStart="40dp"
                        >
                    </LinearLayout>
                </LinearLayout>
                <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:hint="@{viewModel.typeLiveData?`请输入备注`:``}"
                    android:textColor="#DE000000"
                    android:text="@={viewModel.beanLiveData.backInfo}"
                    android:textSize="16sp"
                    android:enabled="@{viewModel.typeLiveData}"
                    />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_marginTop="10dp"
app/src/main/res/layout/activity_tourism_detail.xml
@@ -425,6 +425,35 @@
                    </LinearLayout>
                </LinearLayout>
                <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"
                    android:padding="10dp"
                    >
                    <EditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:autofillHints="creditCardNumber"
                        android:hint="@{viewModel.typeLiveData?`请输入感言`:``}"
                        android:textColorHint="#6b000000"
                        android:textColor="#DE000000"
                        android:textSize="16sp"
                        android:text="@={viewModel.beanLiveData.spee}"
                        android:enabled="@{viewModel.typeLiveData}"
                        android:inputType="textMultiLine"
                        android:background="@null"
                        />
                </RelativeLayout>
            </LinearLayout>
        </ScrollView>
app/src/main/res/layout/item_tourism_experience.xml
@@ -270,6 +270,31 @@
                                android:textSize="12sp"
                                />
                        </LinearLayout>
                        <LinearLayout
                            android:id="@+id/layout_6"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            app:layout_constraintTop_toBottomOf="@id/layout_4"
                            app:layout_constraintStart_toStartOf="@id/layout_4"
                            android:layout_marginTop="6dp"
                            >
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="其他费用:"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                />
                            <TextView
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="@{bean.otherCost}"
                                android:textColor="@color/black"
                                android:textSize="12sp"
                                />
                        </LinearLayout>
                    </androidx.constraintlayout.widget.ConstraintLayout>
                    <TextView
app/zhangshiappwithca.keystore.jks
Binary files differ
gradle.properties
@@ -24,7 +24,7 @@
android.injected.testOnly=false
KEY_PATH=zhangshiapp.keystore.jks
KEY_PATH=zhangshiappwithca.keystore.jks
KEY_PASS=123456
ALIAS_NAME=alias
ALIAS_PASS=123456