Loading

团队博客-第二阶段冲刺-Day1

今天团队冲刺第二阶段正式开始,我们着手做安卓端的系统;

团队博客-第二阶段冲刺-Day1
团队任务
  完成图片转表格app(TransformMine)的开发
1.统一,简约,漂亮的前端界面
2.完成用户主要功能的开发
3.优化用户体验
4.定时团队任务进行团队任务完成情况的审查
今日完成任务
1.制作主页面,包括底部导航栏

2.制作主要功能的几个页面
今日团队任务关键代码:

<?xml version="1.0" encoding="utf-8"?>

<!--侧边栏--> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:id="@+id/main_tab" android:checkableBehavior="single"> <item android:id="@+id/nav_news" android:icon="@drawable/ic_menu_news" android:title="@string/menu_news" /> <item android:id="@+id/nav_trending" android:icon="@drawable/ic_menu_trending" android:title="@string/menu_trending" /> <item android:id="@+id/nav_profile" android:icon="@drawable/ic_menu_person" android:title="@string/menu_profile" /> </group> <group android:id="@+id/other" android:checkableBehavior="single"> <item android:id="@+id/nav_search" android:checkable="false" android:icon="@drawable/ic_menu_search" android:title="@string/menu_search" /> <item android:id="@+id/nav_notifications" android:checkable="false" android:icon="@drawable/ic_menu_notifications" android:title="@string/menu_notifications" /> <item android:id="@+id/nav_starred" android:checkable="false" android:icon="@drawable/ic_menu_star" android:title="@string/menu_starred" /> </group> <group android:id="@+id/setting" android:checkableBehavior="none"> <item android:id="@+id/nav_settings" android:checkable="false" android:icon="@drawable/ic_menu_settings" android:title="@string/menu_settings" /> <item android:id="@+id/nav_about" android:checkable="false" android:icon="@drawable/ic_menu_about" android:title="@string/menu_about" /> </group> </menu>
package com.transform.transformMine.utils;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;

import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;

import com.transform.transformMine.R;
import com.transform.transformMine.core.webview.AgentWebActivity;
import com.transform.transformMine.fragment.other.ServiceProtocolFragment;
import com.xuexiang.xpage.base.XPageFragment;
import com.xuexiang.xpage.core.PageOption;
import com.xuexiang.xui.utils.ColorUtils;
import com.xuexiang.xui.utils.ResUtils;
import com.xuexiang.xui.widget.dialog.DialogLoader;
import com.xuexiang.xui.widget.dialog.materialdialog.DialogAction;
import com.xuexiang.xui.widget.dialog.materialdialog.MaterialDialog;
import com.xuexiang.xutil.XUtil;

import static com.transform.transformMine.core.webview.AgentWebFragment.KEY_URL;

public final class Utils {

    private Utils() {
        throw new UnsupportedOperationException("u can't instantiate me...");
    }

 
    private static final String PRIVACY_URL = "https://gitee.com/xuexiangjys/TemplateAppProject/raw/master/LICENSE";

  
    public static Dialog showPrivacyDialog(Context context, MaterialDialog.SingleButtonCallback submitListener) {
        MaterialDialog dialog = new MaterialDialog.Builder(context).title(R.string.title_reminder).autoDismiss(false).cancelable(false)
                .positiveText(R.string.lab_agree).onPositive((dialog1, which) -> {
                    if (submitListener != null) {
                        submitListener.onClick(dialog1, which);
                    } else {
                        dialog1.dismiss();
                    }
                })
                .negativeText(R.string.lab_disagree).onNegative(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                        dialog.dismiss();
                        DialogLoader.getInstance().showConfirmDialog(context, ResUtils.getString(R.string.title_reminder), String.format(ResUtils.getString(R.string.content_privacy_explain_again), ResUtils.getString(R.string.app_name)), ResUtils.getString(R.string.lab_look_again), new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                                showPrivacyDialog(context, submitListener);
                            }
                        }, ResUtils.getString(R.string.lab_still_disagree), new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                dialog.dismiss();
                                DialogLoader.getInstance().showConfirmDialog(context, ResUtils.getString(R.string.content_think_about_it_again), ResUtils.getString(R.string.lab_look_again), new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        dialog.dismiss();
                                        showPrivacyDialog(context, submitListener);
                                    }
                                }, ResUtils.getString(R.string.lab_exit_app), new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        dialog.dismiss();
                                        XUtil.exitApp();
                                    }
                                });
                            }
                        });
                    }
                }).build();
        dialog.setContent(getPrivacyContent(context));
        //开始响应点击事件
        dialog.getContentView().setMovementMethod(LinkMovementMethod.getInstance());
        dialog.show();
        return dialog;
    }

  
    private static SpannableStringBuilder getPrivacyContent(Context context) {
        SpannableStringBuilder stringBuilder = new SpannableStringBuilder()
                .append("    欢迎来到TransFormMine").append(ResUtils.getString(R.string.app_name)).append("!\n")
                .append("    \n")
                .append("    ");
        stringBuilder.append(getPrivacyLink(context, PRIVACY_URL))
                .append("\n")
                .append("    ")
                .append(getPrivacyLink(context, PRIVACY_URL))
                .append("");
        return stringBuilder;
    }
    private static SpannableString getPrivacyLink(Context context, String privacyUrl) {
        String privacyName = String.format(ResUtils.getString(R.string.lab_privacy_name), ResUtils.getString(R.string.app_name));
        SpannableString spannableString = new SpannableString(privacyName);
        spannableString.setSpan(new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
                goWeb(context, privacyUrl);
            }
        }, 0, privacyName.length(), Spanned.SPAN_MARK_MARK);
        return spannableString;
    }
    public static void goWeb(Context context, final String url) {
        Intent intent = new Intent(context, AgentWebActivity.class);
        intent.putExtra(KEY_URL, url);
        context.startActivity(intent);
    }

    public static void gotoProtocol(XPageFragment fragment, boolean isPrivacy, boolean isImmersive) {
        PageOption.to(ServiceProtocolFragment.class)
                .putString(ServiceProtocolFragment.KEY_PROTOCOL_TITLE, isPrivacy ? ResUtils.getString(R.string.title_privacy_protocol) : ResUtils.getString(R.string.title_user_protocol))
                .putBoolean(ServiceProtocolFragment.KEY_IS_IMMERSIVE, isImmersive)
                .open(fragment);

    }
    public static boolean isColorDark(@ColorInt int color) {
        return ColorUtils.isColorDark(color, 0.382);
    }
}

 

posted @ 2023-05-10 23:58  冰稀饭Aurora  阅读(14)  评论(0编辑  收藏  举报