Browse Source

feat: 🚗 添加新项布局

master
niushuai233 1 year ago
parent
commit
da2e66c73f
  1. 79
      app/src/main/java/cc/niushuai/dididone/MainActivity.java
  2. 74
      app/src/main/java/cc/niushuai/dididone/ui/base/BaseActivity.java
  3. 20
      app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java
  4. 99
      app/src/main/res/layout/activity_new_project.xml
  5. 6
      app/src/main/res/values/strings.xml

79
app/src/main/java/cc/niushuai/dididone/MainActivity.java

@ -1,12 +1,7 @@ @@ -1,12 +1,7 @@
package cc.niushuai.dididone;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.LayoutInflaterCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
@ -14,77 +9,19 @@ import androidx.navigation.ui.AppBarConfiguration; @@ -14,77 +9,19 @@ import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.google.android.material.navigation.NavigationView;
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.devicon_typeface_library.DevIcon;
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
import com.mikepenz.foundation_icons_typeface_library.FoundationIcons;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.Iconics;
import com.mikepenz.iconics.context.IconicsLayoutInflater2;
import com.mikepenz.iconics.typeface.IIcon;
import com.mikepenz.ionicons_typeface_library.Ionicons;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cc.niushuai.dididone.biz.entity.SavedIcon;
import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.databinding.ActivityMainBinding;
import cc.niushuai.dididone.ui.setting.icon.recycle.IconRecycleAdapter;
import cc.niushuai.dididone.util.Snowflake;
import cc.niushuai.dididone.ui.base.BaseActivity;
public class MainActivity extends AppCompatActivity {
public class MainActivity extends BaseActivity {
private AppBarConfiguration mAppBarConfiguration;
private ActivityMainBinding binding;
private void iconicsInit() {
LayoutInflaterCompat.setFactory2(getLayoutInflater(), new IconicsLayoutInflater2(getDelegate()));
Iconics.init(getApplicationContext());
Iconics.registerFont(new DevIcon());
Iconics.registerFont(new CommunityMaterial());
Iconics.registerFont(new GoogleMaterial());
Iconics.registerFont(new Ionicons());
Iconics.registerFont(new FontAwesome());
Iconics.registerFont(new FoundationIcons());
// 初始化icon map
addFontMap(DevIcon.Icon.class);
addFontMap(CommunityMaterial.Icon.class);
addFontMap(GoogleMaterial.Icon.class);
addFontMap(Ionicons.Icon.class);
addFontMap(FontAwesome.Icon.class);
addFontMap(FoundationIcons.Icon.class);
}
private void addFontMap(Class<? extends IIcon> iconClass) {
if (!iconClass.isEnum()) {
Log.d(this.getClass().getSimpleName(), iconClass.getName() + " class not enum class");
return;
}
List<SavedIcon> items = new ArrayList<>();
for (IIcon enumConstant : iconClass.getEnumConstants()) {
SavedIcon icon = new SavedIcon();
icon.setId(Snowflake.next_id());
icon.setIcon(enumConstant.getName());
icon.setColor(String.valueOf(Color.BLACK));
icon.setSize(52);
items.add(icon);
}
IconRecycleAdapter.ICON_MAP.put(IconRecycleAdapter.getIconClassName(iconClass), items);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// 初始化icon列表
iconicsInit();
// 初始化数据库
DBManager.init(this);
@ -130,4 +67,14 @@ public class MainActivity extends AppCompatActivity { @@ -130,4 +67,14 @@ public class MainActivity extends AppCompatActivity {
boolean navigateUp = NavigationUI.navigateUp(navController, mAppBarConfiguration);
return navigateUp || super.onSupportNavigateUp();
}
@Override
protected void init() {
}
@Override
protected void setListeners() {
}
}

74
app/src/main/java/cc/niushuai/dididone/ui/base/BaseActivity.java

@ -1,9 +1,83 @@ @@ -1,9 +1,83 @@
package cc.niushuai.dididone.ui.base;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.LayoutInflaterCompat;
import com.mikepenz.community_material_typeface_library.CommunityMaterial;
import com.mikepenz.devicon_typeface_library.DevIcon;
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
import com.mikepenz.foundation_icons_typeface_library.FoundationIcons;
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
import com.mikepenz.iconics.Iconics;
import com.mikepenz.iconics.context.IconicsLayoutInflater2;
import com.mikepenz.iconics.typeface.IIcon;
import com.mikepenz.ionicons_typeface_library.Ionicons;
import java.util.ArrayList;
import java.util.List;
import cc.niushuai.dididone.biz.entity.SavedIcon;
import cc.niushuai.dididone.ui.setting.icon.recycle.IconRecycleAdapter;
import cc.niushuai.dididone.util.Snowflake;
public abstract class BaseActivity extends AppCompatActivity {
private void iconicsInit() {
LayoutInflaterCompat.setFactory2(getLayoutInflater(), new IconicsLayoutInflater2(getDelegate()));
Iconics.init(getApplicationContext());
Iconics.registerFont(new DevIcon());
Iconics.registerFont(new CommunityMaterial());
Iconics.registerFont(new GoogleMaterial());
Iconics.registerFont(new Ionicons());
Iconics.registerFont(new FontAwesome());
Iconics.registerFont(new FoundationIcons());
// 初始化icon map
addFontMap(DevIcon.Icon.class);
addFontMap(CommunityMaterial.Icon.class);
addFontMap(GoogleMaterial.Icon.class);
addFontMap(Ionicons.Icon.class);
addFontMap(FontAwesome.Icon.class);
addFontMap(FoundationIcons.Icon.class);
}
private void addFontMap(Class<? extends IIcon> iconClass) {
if (!iconClass.isEnum()) {
Log.d(this.getClass().getSimpleName(), iconClass.getName() + " class not enum class");
return;
}
List<SavedIcon> items = new ArrayList<>();
for (IIcon enumConstant : iconClass.getEnumConstants()) {
SavedIcon icon = new SavedIcon();
icon.setId(Snowflake.next_id());
icon.setIcon(enumConstant.getName());
icon.setColor(String.valueOf(Color.BLACK));
icon.setSize(52);
items.add(icon);
}
IconRecycleAdapter.ICON_MAP.put(IconRecycleAdapter.getIconClassName(iconClass), items);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// 初始化字体
iconicsInit();
super.onCreate(savedInstanceState);
init();
setListeners();
}
/**
* 初始化方法
*

20
app/src/main/java/cc/niushuai/dididone/ui/setting/project/NewProjectActivity.java

@ -19,14 +19,14 @@ public class NewProjectActivity extends BaseActivity { @@ -19,14 +19,14 @@ public class NewProjectActivity extends BaseActivity {
binding = ActivityNewProjectBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
init();
setListeners();
}
@Override
protected void init() {
// 设置标题
setTitle("添加新打卡项");
Intent intent = getIntent();
for (String key : intent.getExtras().keySet()) {
XLog.d("key: {}, val: {}", key, intent.getStringExtra(key));
@ -35,12 +35,12 @@ public class NewProjectActivity extends BaseActivity { @@ -35,12 +35,12 @@ public class NewProjectActivity extends BaseActivity {
@Override
protected void setListeners() {
binding.npBtnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
backClick();
}
});
// binding.npBtnBack.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// backClick();
// }
// });
}
private void backClick() {

99
app/src/main/res/layout/activity_new_project.xml

@ -4,23 +4,102 @@ @@ -4,23 +4,102 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.setting.project.NewProjectActivity">
<TextView
android:id="@+id/np_btn_txt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/np_project_name"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:gravity="center|right"
android:text="@string/np_project_name"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="hello new project"
android:textSize="24dp"/>
app:layout_constraintWidth_percent="0.3" />
<EditText
android:id="@+id/np_project_name_txt"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginLeft="20dp"
android:imeOptions="actionDone"
android:inputType="text"
android:textSize="24dp"
app:layout_constraintStart_toEndOf="@+id/np_project_name"
app:layout_constraintTop_toTopOf="@+id/np_project_name"
app:layout_constraintWidth_percent="0.7" />
<TextView
android:id="@+id/np_icon_name"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="5dp"
android:gravity="center|right"
android:text="@string/np_icon_name"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/np_project_name"
app:layout_constraintWidth_percent="0.3" />
<ImageView
android:id="@+id/np_icon_fill"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
app:ico_color="@color/red"
app:ico_icon="ion_ios_heart"
app:layout_constraintStart_toEndOf="@+id/np_icon_name"
app:layout_constraintTop_toBottomOf="@+id/np_project_name_txt" />
<TextView
android:id="@+id/np_color_name"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="5dp"
android:gravity="center|right"
android:text="@string/np_color_name"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/np_icon_name"
app:layout_constraintWidth_percent="0.3" />
<Button
android:id="@+id/np_btn_back"
android:id="@+id/np_color_picker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="@id/np_btn_txt"
app:layout_constraintTop_toTopOf="@id/np_btn_txt"
android:text="返回"/>
android:layout_height="50dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="5dp"
android:text="@string/np_color_picker"
app:layout_constraintStart_toEndOf="@+id/np_color_name"
app:layout_constraintTop_toBottomOf="@+id/np_icon_fill" />
<Button
android:id="@+id/np_button_back"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="25dp"
android:gravity="center"
android:text="@string/np_button_back"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/np_color_name"
app:layout_constraintWidth_percent="0.35" />
<Button
android:id="@+id/np_button_confirm"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="25dp"
android:layout_marginRight="50dp"
android:gravity="center"
android:text="@string/np_button_confirm"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/np_color_picker"
app:layout_constraintWidth_percent="0.35" />
</androidx.constraintlayout.widget.ConstraintLayout>

6
app/src/main/res/values/strings.xml

@ -23,5 +23,11 @@ @@ -23,5 +23,11 @@
<string name="n_menu_name_icon">ICON</string>
<string name="icon_name_FontAwesome">FontAwesome</string>
<string name="n_menu_name_project">打卡项</string>
<string name="np_project_name">项目名称</string>
<string name="np_icon_name">图标</string>
<string name="np_color_name">颜色</string>
<string name="np_color_picker">点我选颜色</string>
<string name="np_button_back">返回</string>
<string name="np_button_confirm">保存</string>
</resources>
Loading…
Cancel
Save