Updated Launcher Icon
Added darkmode to game field Fixed a crash on low density devices Fixed a crash in the DailySudoku Fixed the marking of custom levels in LoadGameActivity Version increase to v3.0.0
This commit is contained in:
parent
94025a7fac
commit
74a739dfba
17 changed files with 245 additions and 120 deletions
|
@ -11,8 +11,8 @@ android {
|
|||
applicationId "org.secuso.privacyfriendlysudoku"
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 29
|
||||
versionCode 8
|
||||
versionName "2.2.1"
|
||||
versionCode 9
|
||||
versionName "3.0.0"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
buildTypes {
|
||||
|
|
|
@ -23,19 +23,19 @@
|
|||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar"></activity>
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.TutorialActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme.NoActionBar"></activity>
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.DailySudokuActivity"
|
||||
android:label="@string/Sudoku"
|
||||
android:theme="@style/AppTheme.NoActionBar"></activity>
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.CreateSudokuActivity"
|
||||
android:label="@string/Sudoku"
|
||||
android:theme="@style/AppTheme.NoActionBar"></activity>
|
||||
android:theme="@style/AppTheme.NoActionBar" />
|
||||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.SettingsActivity"
|
||||
android:label="@string/title_activity_settings"
|
||||
|
@ -47,15 +47,12 @@
|
|||
android:theme="@style/AppTheme.NoActionBar">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data
|
||||
android:scheme="sudoku" />
|
||||
<data android:scheme="sudoku" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data
|
||||
|
@ -74,7 +71,6 @@
|
|||
<activity
|
||||
android:name="org.secuso.privacyfriendlysudoku.ui.HelpActivity"
|
||||
android:label="@string/title_activity_help" />
|
||||
|
||||
<service
|
||||
android:name="org.secuso.privacyfriendlysudoku.controller.GeneratorService"
|
||||
android:enabled="true"
|
||||
|
|
|
@ -23,7 +23,6 @@ import android.content.Context;
|
|||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
|
@ -43,15 +42,17 @@ import org.secuso.privacyfriendlysudoku.controller.database.DatabaseHelper;
|
|||
import org.secuso.privacyfriendlysudoku.controller.database.model.DailySudoku;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import org.secuso.privacyfriendlysudoku.controller.SaveLoadStatistics;
|
||||
|
||||
import org.secuso.privacyfriendlysudoku.controller.qqwing.QQWing;
|
||||
import org.secuso.privacyfriendlysudoku.game.GameDifficulty;
|
||||
import org.secuso.privacyfriendlysudoku.game.GameType;
|
||||
import org.secuso.privacyfriendlysudoku.ui.view.R;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
/**
|
||||
*The DailySudokuActivity is an activity that extends the AppCompatActivity.
|
||||
|
@ -60,16 +61,12 @@ import java.util.Locale;
|
|||
*/
|
||||
|
||||
|
||||
public class DailySudokuActivity<Database> extends AppCompatActivity {
|
||||
public class DailySudokuActivity extends AppCompatActivity {
|
||||
|
||||
List<DailySudoku> sudokuList;
|
||||
SharedPreferences settings;
|
||||
private final DatabaseHelper dbHelper = new DatabaseHelper(this);
|
||||
RatingBar difficultyBar;
|
||||
static final int MAIN_CONTENT_FADEOUT_DURATION = 150;
|
||||
static final int MAIN_CONTENT_FADEIN_DURATION = 250;
|
||||
private Handler mHandler;
|
||||
private StatsActivity.SectionsPagerAdapter mSectionsPagerAdapter;
|
||||
private SudokuListAdapter sudokuListAdapter;
|
||||
private int dailyId;
|
||||
|
||||
|
@ -111,11 +108,9 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
|
||||
difficultyBar = findViewById(R.id.first_diff_bar);
|
||||
settings = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
mHandler = new Handler();
|
||||
|
||||
|
||||
ListView listView = (ListView)findViewById(R.id.sudoku_list);
|
||||
sudokuListAdapter = new DailySudokuActivity.SudokuListAdapter(this, sudokuList);
|
||||
sudokuListAdapter = new SudokuListAdapter(this, sudokuList);
|
||||
listView.setAdapter(sudokuListAdapter);
|
||||
|
||||
// Calculate the current date as an int id
|
||||
|
@ -157,8 +152,6 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
difficultyBar.setNumStars(GameDifficulty.getValidDifficultyList().size());
|
||||
difficultyBar.setMax(GameDifficulty.getValidDifficultyList().size());
|
||||
difficultyBar.setRating(GameDifficulty.getValidDifficultyList().indexOf(dailyDifficulty)+1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void onClick(View view) {
|
||||
|
@ -196,11 +189,7 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
}
|
||||
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.menu_stats, menu);
|
||||
//getMenuInflater().inflate(R.menu.menu_stats, menu);
|
||||
return true;
|
||||
//return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -210,20 +199,15 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
switch(item.getItemId()) {
|
||||
case R.id.action_reset:
|
||||
SaveLoadStatistics.resetStats(this);
|
||||
mSectionsPagerAdapter.refresh(this);
|
||||
return true;
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
return true;
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private class SudokuListAdapter extends BaseAdapter {
|
||||
private static class SudokuListAdapter extends BaseAdapter {
|
||||
|
||||
private Context context;
|
||||
private List<DailySudoku> sudokuList;
|
||||
|
@ -263,7 +247,7 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
TextView playedTime = (TextView)convertView.findViewById(R.id.loadgame_listentry_timeplayed);
|
||||
TextView lastTimePlayed = (TextView)convertView.findViewById(R.id.loadgame_listentry_lasttimeplayed);
|
||||
ImageView image = (ImageView)convertView.findViewById(R.id.loadgame_listentry_gametypeimage);
|
||||
ImageView customImage = (ImageView)convertView.findViewById(R.id.loadgame_listentry_custom_label);
|
||||
ImageView customImage = (ImageView)convertView.findViewById(R.id.loadgame_listentry_custom_icon);
|
||||
|
||||
|
||||
image.setImageResource(R.drawable.icon_default_9x9);
|
||||
|
@ -276,18 +260,16 @@ public class DailySudokuActivity<Database> extends AppCompatActivity {
|
|||
customImage.setVisibility(View.INVISIBLE);
|
||||
|
||||
|
||||
Calendar currentDate = Calendar.getInstance();
|
||||
//int id = currentDate.get(Calendar.DAY_OF_MONTH) * 1000000
|
||||
// + (currentDate.get(Calendar.MONTH) + 1) * 10000 + currentDate.get(Calendar.YEAR);
|
||||
|
||||
int id = sudoku.getId();
|
||||
int dayOfMonth = id/1000000;
|
||||
int month = (id/10000) % 100;
|
||||
int year = id%10000;
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.set(id%10000, (id/10000) % 100, id/1000000, 0, 0, 0 );
|
||||
|
||||
String str = String.format("%02d.%02d.%02d", dayOfMonth, month, year);
|
||||
|
||||
lastTimePlayed.setText(str);
|
||||
DateFormat format = DateFormat.getDateInstance();
|
||||
format.setTimeZone(TimeZone.getDefault());
|
||||
|
||||
lastTimePlayed.setText(format.format(cal.getTime()));
|
||||
|
||||
playedTime.setText(sudoku.getTimeNeeded());
|
||||
return convertView;
|
||||
}
|
||||
|
|
|
@ -42,7 +42,6 @@ import android.widget.TextView;
|
|||
|
||||
import org.secuso.privacyfriendlysudoku.controller.GameController;
|
||||
import org.secuso.privacyfriendlysudoku.controller.GameStateManager;
|
||||
import org.secuso.privacyfriendlysudoku.controller.NewLevelManager;
|
||||
import org.secuso.privacyfriendlysudoku.controller.helper.GameInfoContainer;
|
||||
import org.secuso.privacyfriendlysudoku.game.GameDifficulty;
|
||||
import org.secuso.privacyfriendlysudoku.ui.listener.IDeleteDialogFragmentListener;
|
||||
|
@ -229,7 +228,8 @@ public class LoadGameActivity extends BaseActivity implements IDeleteDialogFragm
|
|||
TextView playedTime = (TextView)convertView.findViewById(R.id.loadgame_listentry_timeplayed);
|
||||
TextView lastTimePlayed = (TextView)convertView.findViewById(R.id.loadgame_listentry_lasttimeplayed);
|
||||
ImageView image = (ImageView)convertView.findViewById(R.id.loadgame_listentry_gametypeimage);
|
||||
ImageView customImage = (ImageView)convertView.findViewById(R.id.loadgame_listentry_custom_label);
|
||||
ImageView customImage = (ImageView)convertView.findViewById(R.id.loadgame_listentry_custom_icon);
|
||||
TextView customLabel = (TextView) convertView.findViewById(R.id.loadgame_listentry_custom_label);
|
||||
|
||||
switch(gic.getGameType()) {
|
||||
case Default_6x6:
|
||||
|
@ -250,11 +250,8 @@ public class LoadGameActivity extends BaseActivity implements IDeleteDialogFragm
|
|||
difficultyBar.setMax(GameDifficulty.getValidDifficultyList().size());
|
||||
difficultyBar.setRating(GameDifficulty.getValidDifficultyList().indexOf(gic.getDifficulty())+1);
|
||||
|
||||
if(!gic.isCustom()) {
|
||||
customImage.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
customImage.setVisibility(View.VISIBLE);
|
||||
}
|
||||
customImage.setImageResource(gic.isCustom() ? R.drawable.ic_circle_blue_36dp : R.drawable.ic_circle_grey_36dp);
|
||||
customLabel.setVisibility(gic.isCustom() ? View.VISIBLE : View.GONE);
|
||||
|
||||
int time = gic.getTimePlayed();
|
||||
int seconds = time % 60;
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package org.secuso.privacyfriendlysudoku.ui.view;
|
||||
|
||||
/**
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
package org.secuso.privacyfriendlysudoku.ui.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
|
@ -50,15 +52,32 @@ public class SudokuCellView extends View {
|
|||
Symbol symbolsToUse = Symbol.Default;
|
||||
RelativeLayout.LayoutParams params;
|
||||
|
||||
|
||||
public SudokuCellView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
int backgroundColor;
|
||||
int backgroundErrorColor;
|
||||
int backgroundSelectedColor;
|
||||
int backgroundConnectedOuterColor;
|
||||
int backgroundConnectedInnerColor;
|
||||
int backgroundValueHighlightedColor;
|
||||
int backgroundValueHighlightedSelectedColor;
|
||||
int textColor;
|
||||
|
||||
public SudokuCellView(Context context, AttributeSet attrs){
|
||||
super(context, attrs);
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SudokuCellView);
|
||||
backgroundColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundErrorColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundErrorColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundSelectedColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundSelectedColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundConnectedOuterColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundConnectedOuterColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundConnectedInnerColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundConnectedInnerColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundValueHighlightedColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundValueHighlightedColor, Color.argb(255, 200, 200, 200));
|
||||
backgroundValueHighlightedSelectedColor = a.getColor(R.styleable.SudokuCellView_sudokuCellBackgroundValueHighlightedSelectedColor, Color.argb(255, 200, 200, 200));
|
||||
textColor = a.getColor(R.styleable.SudokuCellView_sudokuCellTextColor, Color.argb(255, 200, 200, 200));
|
||||
a.recycle();
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setSelected(boolean b) {
|
||||
this.selected = b;
|
||||
}
|
||||
|
@ -108,13 +127,6 @@ public class SudokuCellView extends View {
|
|||
return true;
|
||||
}*/
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
|
@ -127,27 +139,28 @@ public class SudokuCellView extends View {
|
|||
Paint p = new Paint();
|
||||
switch(highlightType) {
|
||||
case Default:
|
||||
p.setColor(Color.WHITE);
|
||||
p.setColor(backgroundColor);
|
||||
break;
|
||||
case Error:
|
||||
p.setColor(Color.LTGRAY);
|
||||
p.setColor(backgroundErrorColor);
|
||||
break;
|
||||
case Selected:
|
||||
p.setColor(Color.GREEN);
|
||||
p.setColor(backgroundSelectedColor);
|
||||
break;
|
||||
case Connected:
|
||||
p.setColor(Color.WHITE);
|
||||
p.setColor(backgroundConnectedOuterColor);
|
||||
drawBackground(canvas, 3, 3, mWidth - 3, mHeight - 3, p);
|
||||
p.setColor(Color.YELLOW);
|
||||
p.setColor(backgroundConnectedInnerColor);
|
||||
p.setAlpha(100);
|
||||
break;
|
||||
case Value_Highlighted:
|
||||
p.setColor(Color.YELLOW);
|
||||
p.setColor(backgroundValueHighlightedColor);
|
||||
break;
|
||||
case Value_Highlighted_Selected:
|
||||
p.setColor(Color.CYAN);
|
||||
p.setColor(backgroundValueHighlightedSelectedColor);
|
||||
break;
|
||||
default:
|
||||
p.setColor(Color.WHITE);
|
||||
p.setColor(backgroundColor);
|
||||
}
|
||||
|
||||
|
||||
|
@ -166,6 +179,7 @@ public class SudokuCellView extends View {
|
|||
|
||||
public void drawValue(Canvas canvas) {
|
||||
Paint p = new Paint();
|
||||
p.setColor(textColor);
|
||||
int root = (int) Math.sqrt(size);
|
||||
int j= root+1;
|
||||
int k = root;
|
||||
|
|
|
@ -21,6 +21,8 @@ package org.secuso.privacyfriendlysudoku.ui.view;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
|
@ -50,6 +52,9 @@ public class SudokuFieldLayout extends RelativeLayout implements IHighlightChang
|
|||
private int gameCellHeight;
|
||||
private SharedPreferences settings;
|
||||
private Paint p = new Paint();
|
||||
int backgroundColor;
|
||||
int errorColor;
|
||||
int sectionLineColor;
|
||||
|
||||
private OnTouchListener listener = new OnTouchListener() {
|
||||
@Override
|
||||
|
@ -74,8 +79,15 @@ public class SudokuFieldLayout extends RelativeLayout implements IHighlightChang
|
|||
public SudokuFieldLayout(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
this.attrs=attrs;
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SudokuFieldLayout);
|
||||
backgroundColor = a.getColor(R.styleable.SudokuFieldLayout_sudokuFieldGridColor, Color.argb(255, 200, 200, 200));
|
||||
errorColor = a.getColor(R.styleable.SudokuFieldLayout_sudokuFieldErrorColor, Color.RED);
|
||||
sectionLineColor = a.getColor(R.styleable.SudokuFieldLayout_sudokuFieldSectionLineColor, Color.BLACK);
|
||||
a.recycle();
|
||||
|
||||
setWillNotDraw(false);
|
||||
setBackgroundColor(Color.argb(255, 200, 200, 200));
|
||||
setBackgroundColor(backgroundColor);
|
||||
}
|
||||
|
||||
public void setSettingsAndGame(SharedPreferences sharedPref, GameController gc) {
|
||||
|
@ -117,7 +129,7 @@ public class SudokuFieldLayout extends RelativeLayout implements IHighlightChang
|
|||
|
||||
if(gameController == null) return;
|
||||
|
||||
p.setColor(Color.BLACK);
|
||||
p.setColor(sectionLineColor);
|
||||
p.setStrokeWidth(5);
|
||||
|
||||
int horizontalSections = gameController.getSize() / sectionWidth;
|
||||
|
@ -241,7 +253,7 @@ public class SudokuFieldLayout extends RelativeLayout implements IHighlightChang
|
|||
p = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
p.setStyle(Paint.Style.STROKE);
|
||||
p.setStrokeWidth(4);
|
||||
p.setColor(Color.RED);
|
||||
p.setColor(errorColor);
|
||||
|
||||
float offsetX = 0;
|
||||
float offsetY = 0;
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
android:viewportWidth="600"
|
||||
android:viewportHeight="600">
|
||||
<path
|
||||
android:pathData="M510.91,471.7V216.47L336.27,41.83H323.68V93.05L289.26,58.62H275.82v40.3l-40.3,-40.3H222.09l0,16.77L188.51,41.83H175.07l0.12,54.69L134.35,55.68 88.6,62 71.8,76.25l2.52,17.64 5,6.71 -5.88,-0.84 38.62,38.62 -44.49,-2.52V149.3l27,27 -53.83,-0.1V189.6L174.23,323.09H40.74v14.28l26.87,26.86v94L121.34,512H470.61A40.42,40.42 0,0 0,510.91 471.7Z">
|
||||
android:pathData="M659,552.9V364.5L336.3,41.8h-12.6V93l-34.4,-34.4h-13.4v40.3l-40.3,-40.3h-13.4v16.8l-33.6,-33.6h-13.4l0.1,54.7l-40.8,-40.8L88.6,62L71.8,76.2l2.5,17.6l5,6.7l-5.9,-0.8l38.6,38.6l-44.5,-2.5v13.4l27,27l-53.8,-0.1v13.4l133.5,133.5H40.7v14.3l26.9,26.9v94l141.5,141.6L633,611.9C655.2,611.8 658.9,575.1 659,552.9z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="43.94"
|
||||
android:startX="119.85"
|
||||
android:endY="551.52"
|
||||
android:endX="412.9"
|
||||
android:startY="30.4022"
|
||||
android:startX="143.3293"
|
||||
android:endY="680.6151"
|
||||
android:endX="518.728"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF004492"/>
|
||||
<item android:offset="0.22" android:color="#F9004593"/>
|
||||
|
@ -25,33 +25,33 @@
|
|||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M174.65,41.63h13.43v429.87h-13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M174.6,41.6h13.4v429.9h-13.4z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M322.42,41.63h13.43v429.87h-13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M322.4,41.6h13.4v429.9h-13.4z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M40.31,337.17l0,-13.43l429.87,-0l0,13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M40.3,323.7h429.9v13.4h-429.9z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M40.31,189.4l0,-13.43l429.87,-0l0,13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M40.3,176h429.9v13.4h-429.9z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M94.05,68.49h40.3V55.06H94.05a26.87,26.87 0,0 0,0 53.73h13.43a13.44,13.44 0,1 1,0 26.87H67.18v13.43h40.3a26.87,26.87 0,0 0,0 -53.73H94.05a13.44,13.44 0,0 1,0 -26.87Z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M94.1,68.5h40.3V55.1H94.1c-14.8,0.3 -26.6,12.5 -26.3,27.4c0.3,14.4 11.9,26.1 26.3,26.3h13.4c7.4,-0.2 13.6,5.6 13.8,13.1c0.2,7.4 -5.6,13.6 -13.1,13.8c-0.2,0 -0.5,0 -0.7,0H67.2v13.4h40.3c14.8,-0.3 26.6,-12.5 26.3,-27.4c-0.3,-14.4 -11.9,-26.1 -26.3,-26.3H94.1C86.6,95.2 80.8,89 81,81.6C81.2,74.4 86.9,68.7 94.1,68.5z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M262,206.19h-40.3v94L262,300.19a26.86,26.86 0,0 0,26.86 -26.87v-40.3A26.86,26.86 0,0 0,262 206.19ZM262,286.79L235.1,286.79L235.1,219.62L262,219.62a13.43,13.43 0,0 1,13.43 13.43v40.3A13.43,13.43 0,0 1,262 286.79Z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M262,206.2h-40.3v94H262c14.8,0 26.9,-12 26.9,-26.9c0,0 0,0 0,0V233C288.8,218.2 276.8,206.2 262,206.2zM262,286.8h-26.9v-67.2H262c7.4,0 13.4,6 13.4,13.4v40.3C275.4,280.8 269.4,286.8 262,286.8C262,286.8 262,286.8 262,286.8z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M406.38,206.19L392.94,206.19a26.86,26.86 0,0 0,-26.86 26.86v40.3a26.86,26.86 0,0 0,26.86 26.87h13.44a26.87,26.87 0,0 0,26.86 -26.87v-40.3A26.87,26.87 0,0 0,406.38 206.19ZM419.81,273.35a13.48,13.48 0,0 1,-13.43 13.44L392.94,286.79a13.47,13.47 0,0 1,-13.43 -13.44v-40.3a13.47,13.47 0,0 1,13.43 -13.43h13.44a13.48,13.48 0,0 1,13.43 13.43Z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M406.4,206.2h-13.4c-14.8,0 -26.9,12 -26.9,26.9v40.3c0,14.8 12,26.9 26.9,26.9c0,0 0,0 0,0h13.4c14.8,0 26.9,-12 26.9,-26.9v-40.3C433.2,218.2 421.2,206.2 406.4,206.2zM419.8,273.4c0,7.4 -6,13.4 -13.4,13.4h-13.4c-7.4,0 -13.4,-6 -13.4,-13.4v-40.3c0,-7.4 6,-13.4 13.4,-13.4h13.4c7.4,0 13.4,6 13.4,13.4V273.4z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M134.35,374.01l0,0l0,0l0,0l0,-9.5l-9.36,0l-0.04,0.1l-0.1,-0.1l-37.91,37.91l-6.32,6.32l0,-12.56l0,-31.67l-13.44,0l0,19.82l0,17.34l0,20.51l0,17.64l0,18.72l13.44,0l0,-30.8l6.45,-6.45l37.78,37.25l0,0l9.5,0l0,-9.36l-37.85,-37.33l37.84,-37.84l0.01,0z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M134.4,374l0,0l0,0l0,0l0,-9.5l-9.4,0l-0.1,0.1l-0.1,-0.1l-37.9,37.9l-6.3,6.3l0,-12.5l0,-31.7l-13.4,0l0,19.8l0,17.4l0,20.5l0,17.6l0,18.7l13.4,0l0,-30.8l6.5,-6.4l37.7,37.2l0,0l9.6,0l0,-9.3l-37.9,-37.3l37.8,-37.9z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M275.4,58.42v60.45a20.15,20.15 0,1 1,-40.3 0V58.42H221.67v60.45a33.58,33.58 0,1 0,67.16 0V58.42Z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M275.4,58.4v60.4c0,11.1 -9,20.2 -20.1,20.2s-20.2,-9 -20.2,-20.2l0,0V58.4h-13.4v60.4c0,18.5 15,33.6 33.6,33.6c18.5,0 33.6,-15 33.6,-33.6V58.4H275.4z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
<path
|
||||
android:pathData="M275.4,364.51V425a20.15,20.15 0,1 1,-40.3 0V364.51H221.67V425a33.58,33.58 0,1 0,67.16 0V364.51Z"
|
||||
android:fillColor="#fff"/>
|
||||
android:pathData="M275.4,364.5V425c0,11.1 -9,20.1 -20.1,20.1s-20.2,-9 -20.2,-20.1l0,0v-60.5h-13.4V425c0,18.5 15,33.6 33.6,33.6c18.5,0 33.6,-15 33.6,-33.6v-60.5H275.4z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
</vector>
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="512dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="512"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:pathData="M510.91,471.7V216.47L336.27,41.83H323.68V93.05L289.26,58.62H275.82v40.3l-40.3,-40.3H222.09l0,16.77L188.51,41.83H175.07l0.12,54.69L134.35,55.68 88.6,62 71.8,76.25l2.52,17.64 5,6.71 -5.88,-0.84 38.62,38.62 -44.49,-2.52V149.3l27,27 -53.83,-0.1V189.6L174.23,323.09H40.74v14.28l26.87,26.86v94L121.34,512H470.61A40.42,40.42 0,0 0,510.91 471.7Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="43.94"
|
||||
android:startX="119.85"
|
||||
android:endY="551.52"
|
||||
android:endX="412.9"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FF004492"/>
|
||||
<item android:offset="0.22" android:color="#F9004593"/>
|
||||
<item android:offset="0.39" android:color="#E8024894"/>
|
||||
<item android:offset="0.55" android:color="#C9044E97"/>
|
||||
<item android:offset="0.7" android:color="#A007569B"/>
|
||||
<item android:offset="0.84" android:color="#6B0A60A0"/>
|
||||
<item android:offset="0.97" android:color="#280F6CA6"/>
|
||||
<item android:offset="1" android:color="#19106FA8"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M174.65,41.63h13.43v429.87h-13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M322.42,41.63h13.43v429.87h-13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M40.31,337.17l0,-13.43l429.87,-0l0,13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M40.31,189.4l0,-13.43l429.87,-0l0,13.43z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M94.05,68.49h40.3V55.06H94.05a26.87,26.87 0,0 0,0 53.73h13.43a13.44,13.44 0,1 1,0 26.87H67.18v13.43h40.3a26.87,26.87 0,0 0,0 -53.73H94.05a13.44,13.44 0,0 1,0 -26.87Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M262,206.19h-40.3v94L262,300.19a26.86,26.86 0,0 0,26.86 -26.87v-40.3A26.86,26.86 0,0 0,262 206.19ZM262,286.79L235.1,286.79L235.1,219.62L262,219.62a13.43,13.43 0,0 1,13.43 13.43v40.3A13.43,13.43 0,0 1,262 286.79Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M406.38,206.19L392.94,206.19a26.86,26.86 0,0 0,-26.86 26.86v40.3a26.86,26.86 0,0 0,26.86 26.87h13.44a26.87,26.87 0,0 0,26.86 -26.87v-40.3A26.87,26.87 0,0 0,406.38 206.19ZM419.81,273.35a13.48,13.48 0,0 1,-13.43 13.44L392.94,286.79a13.47,13.47 0,0 1,-13.43 -13.44v-40.3a13.47,13.47 0,0 1,13.43 -13.43h13.44a13.48,13.48 0,0 1,13.43 13.43Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M134.35,374.01l0,0l0,0l0,0l0,-9.5l-9.36,0l-0.04,0.1l-0.1,-0.1l-37.91,37.91l-6.32,6.32l0,-12.56l0,-31.67l-13.44,0l0,19.82l0,17.34l0,20.51l0,17.64l0,18.72l13.44,0l0,-30.8l6.45,-6.45l37.78,37.25l0,0l9.5,0l0,-9.36l-37.85,-37.33l37.84,-37.84l0.01,0z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M275.4,58.42v60.45a20.15,20.15 0,1 1,-40.3 0V58.42H221.67v60.45a33.58,33.58 0,1 0,67.16 0V58.42Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M275.4,364.51V425a20.15,20.15 0,1 1,-40.3 0V364.51H221.67V425a33.58,33.58 0,1 0,67.16 0V364.51Z"
|
||||
android:fillColor="#fff"/>
|
||||
</vector>
|
|
@ -15,7 +15,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_marginRight="10dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:src="@drawable/icon_default_9x9" />
|
||||
app:srcCompat="@drawable/icon_default_9x9" />
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/relativeLayout2"
|
||||
|
@ -23,16 +23,13 @@
|
|||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/loadgame_listentry_custom_label"
|
||||
android:layout_width="10dp"
|
||||
android:id="@+id/loadgame_listentry_custom_icon"
|
||||
android:layout_width="12dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginLeft="8dp"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/loadgame_listentry_gametype"
|
||||
app:layout_constraintEnd_toEndOf="@+id/loadgame_listentry_difficultytext"
|
||||
app:layout_constraintHorizontal_bias="1.0"
|
||||
app:layout_constraintStart_toEndOf="@+id/loadgame_listentry_gametype"
|
||||
app:layout_constraintTop_toTopOf="@+id/loadgame_listentry_gametype"
|
||||
app:layout_constraintStart_toStartOf="@id/loadgame_listentry_gametype"
|
||||
app:layout_constraintEnd_toStartOf="@+id/loadgame_listentry_difficultybar"
|
||||
app:layout_constraintTop_toTopOf="@id/loadgame_listentry_difficultybar"
|
||||
app:layout_constraintBottom_toBottomOf="@id/loadgame_listentry_difficultybar"
|
||||
app:srcCompat="@drawable/create_game_src" />
|
||||
|
||||
<TextView
|
||||
|
@ -47,6 +44,17 @@
|
|||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="1.0" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/loadgame_listentry_custom_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="16dp"
|
||||
android:text="@string/difficulty_custom"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toEndOf="@id/loadgame_listentry_gametype"
|
||||
app:layout_constraintTop_toTopOf="@id/loadgame_listentry_gametype"
|
||||
app:layout_constraintBottom_toBottomOf="@id/loadgame_listentry_gametype"
|
||||
android:layout_marginLeft="16dp" />
|
||||
|
||||
<RatingBar
|
||||
android:id="@+id/loadgame_listentry_difficultybar"
|
||||
|
@ -54,12 +62,12 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:clickable="false"
|
||||
android:numStars="3"
|
||||
android:numStars="4"
|
||||
android:rating="3"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.0"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/loadgame_listentry_custom_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.0" />
|
||||
|
||||
|
@ -67,11 +75,12 @@
|
|||
android:id="@+id/loadgame_listentry_difficultytext"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:text="Difficulty"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/loadgame_listentry_difficultybar"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@+id/loadgame_listentry_difficultybar"
|
||||
app:layout_constraintTop_toTopOf="@+id/loadgame_listentry_difficultybar" />
|
||||
app:layout_constraintTop_toTopOf="@+id/loadgame_listentry_difficultybar"
|
||||
android:layout_marginLeft="8dp" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground>
|
||||
<inset android:drawable="@drawable/ic_launcher_foreground_shadow"
|
||||
android:inset="21%"/>
|
||||
android:insetTop="22%"
|
||||
android:insetLeft="22%"
|
||||
android:insetRight="11%"
|
||||
android:insetBottom="11%"
|
||||
/>
|
||||
</foreground>
|
||||
</adaptive-icon>
|
|
@ -26,6 +26,19 @@
|
|||
<item name="backgroundTutorialStars">@color/colorPrimaryDark</item>
|
||||
<item name="menuTextColor">@color/white</item>
|
||||
<item name="blueHighlight">@color/colorAccent</item>
|
||||
|
||||
<item name="sudokuFieldGridColor">@color/vdarkgrey</item>
|
||||
<item name="sudokuFieldSectionLineColor">@color/white</item>
|
||||
|
||||
<!-- SudokuCellView -->
|
||||
<item name="sudokuCellBackgroundColor">@color/darkgrey</item>
|
||||
<item name="sudokuCellBackgroundErrorColor">@color/vdarkgrey</item>
|
||||
<item name="sudokuCellBackgroundSelectedColor">@color/darkgreen</item>
|
||||
<item name="sudokuCellBackgroundConnectedOuterColor">@color/darkgrey</item>
|
||||
<item name="sudokuCellBackgroundConnectedInnerColor">@color/yellow</item>
|
||||
<item name="sudokuCellBackgroundValueHighlightedColor">@color/darkyellow</item>
|
||||
<item name="sudokuCellBackgroundValueHighlightedSelectedColor">@color/darkcyan</item>
|
||||
<item name="sudokuCellTextColor">@color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar">
|
||||
|
@ -85,6 +98,7 @@
|
|||
</style>
|
||||
|
||||
|
||||
|
||||
<!-- <style name="FontStyle">
|
||||
<item name="android:fontFamily"></item>
|
||||
</style> -->
|
||||
|
|
|
@ -19,4 +19,21 @@
|
|||
<attr name="backgroundTutorialStars" format="color"/>
|
||||
<attr name="blueHighlight" format="color"/>
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="SudokuCellView">
|
||||
<attr name="sudokuCellBackgroundColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundErrorColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundSelectedColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundConnectedOuterColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundConnectedInnerColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundValueHighlightedColor" format="color" />
|
||||
<attr name="sudokuCellBackgroundValueHighlightedSelectedColor" format="color" />
|
||||
<attr name="sudokuCellTextColor" format="color" />
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="SudokuFieldLayout">
|
||||
<attr name="sudokuFieldGridColor" format="color" />
|
||||
<attr name="sudokuFieldSectionLineColor" format="color" />
|
||||
<attr name="sudokuFieldErrorColor" format="color" />
|
||||
</declare-styleable>
|
||||
</resources>
|
|
@ -11,6 +11,16 @@
|
|||
<color name="white">#ffffff</color>
|
||||
<color name="black">#000000</color>
|
||||
<color name="darkgrey">#121212</color>
|
||||
<color name="red">#ffff0000</color>
|
||||
<color name="vlightgrey">#CCCCCC</color>
|
||||
<color name="vdarkgrey">#333333</color>
|
||||
<color name="darkgreen">#FF004400</color>
|
||||
<color name="darkyellow">#FF444400</color>
|
||||
<color name="darkcyan">#FF004444</color>
|
||||
|
||||
<color name="lightgreen">#FF00FF00</color>
|
||||
<color name="green">#388E3C</color>
|
||||
<color name="cyan">#FF00FFFF</color>
|
||||
|
||||
<!-- dots inactive colors -->
|
||||
<color name="dot_dark_screen">#026499</color>
|
||||
|
|
|
@ -24,6 +24,21 @@
|
|||
<item name="backgroundTutorialStars">@color/white</item>
|
||||
<item name="menuTextColor">@null</item>
|
||||
<item name="blueHighlight">@color/colorPrimaryDark</item>
|
||||
|
||||
<!-- SudokuFieldLayout -->
|
||||
<item name="sudokuFieldGridColor">@color/vlightgrey</item>
|
||||
<item name="sudokuFieldErrorColor">@color/red</item>
|
||||
<item name="sudokuFieldSectionLineColor">@color/black</item>
|
||||
|
||||
<!-- SudokuCellView -->
|
||||
<item name="sudokuCellBackgroundColor">@color/white</item>
|
||||
<item name="sudokuCellBackgroundErrorColor">@color/vlightgrey</item>
|
||||
<item name="sudokuCellBackgroundSelectedColor">@color/lightgreen</item>
|
||||
<item name="sudokuCellBackgroundConnectedOuterColor">@color/white</item>
|
||||
<item name="sudokuCellBackgroundConnectedInnerColor">@color/yellow</item>
|
||||
<item name="sudokuCellBackgroundValueHighlightedColor">@color/yellow</item>
|
||||
<item name="sudokuCellBackgroundValueHighlightedSelectedColor">@color/cyan</item>
|
||||
<item name="sudokuCellTextColor">@color/black</item>
|
||||
</style>
|
||||
|
||||
<style name="ToolbarStyle" parent="Widget.AppCompat.ActionBar">
|
||||
|
@ -82,7 +97,6 @@
|
|||
<item name="android:windowNoTitle">true</item>
|
||||
</style>
|
||||
|
||||
|
||||
<!-- <style name="FontStyle">
|
||||
<item name="android:fontFamily"></item>
|
||||
</style> -->
|
||||
|
|
Loading…
Add table
Reference in a new issue