Added border (bool, size, color) to Label, added border switch to EditTextActivity, draw white border of fixed size

pull/3/head
Olga Miller 2017-03-04 14:48:28 +01:00
rodzic 9e5738f807
commit 6533062eb7
6 zmienionych plików z 101 dodań i 26 usunięć

Wyświetl plik

@ -42,7 +42,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O
private FontFamilySet mFontFamilySet;
private FontFamilySet.FontFamily mSelectedFontFamily;
private List<String> mFontFamilyNameList;
private CheckBox mEditItalic, mEditBold;
private CheckBox mEditItalic, mEditBold, mEditBorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -52,6 +52,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O
mColorPaletteView = (ColorPaletteView) findViewById(R.id.edit_color);
mEditBold = (CheckBox) findViewById(R.id.edit_bold);
mEditItalic = (CheckBox) findViewById(R.id.edit_italic);
mEditBorder = (CheckBox) findViewById(R.id.edit_border);
}
@Override
@ -65,6 +66,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O
mColorPaletteView.setColor(label.getForeColor());
initFontFamilySpinner(label.getFamilyName());
updateBoldAndItalic();
mEditBorder.setChecked(label.getBorder());
}
private void initFontFamilySpinner(String familyName) {
@ -160,6 +162,7 @@ public class EditTextActivity extends AppCompatActivity implements AdapterView.O
label.setFamilyName(mSelectedFontFamily.name);
label.setItalic(mEditItalic.isChecked());
label.setBold(mEditBold.isChecked());
label.setBorder(mEditBorder.isChecked());
label.setForeColor(mColorPaletteView.getColor());
return label;
}

Wyświetl plik

@ -21,10 +21,10 @@ import java.io.Serializable;
public class Label implements Serializable {
private String mText;
private float mTextSize;
private float mTextSize, mBorderSize;
private String mFamilyName;
private boolean mBold, mItalic;
private int mForeColor, mBackColor;
private boolean mBold, mItalic, mBorder;
private int mForeColor, mBackColor, mBorderColor;
public Label() {
mText = "";
@ -34,6 +34,9 @@ public class Label implements Serializable {
mItalic = false;
mForeColor = Color.BLACK;
mBackColor = Color.TRANSPARENT;
mBorder = true;
mBorderSize = 0.05f;
mBorderColor = Color.WHITE;
}
public String getText() {
@ -49,9 +52,9 @@ public class Label implements Serializable {
return mTextSize;
}
public void setTextSize(float textSize) {
if (textSize > 0f)
mTextSize = textSize;
public void setTextSize(float size) {
if (size > 0f)
mTextSize = size;
}
public String getFamilyName() {
@ -93,4 +96,28 @@ public class Label implements Serializable {
public void setBackColor(int color) {
mBackColor = color;
}
public boolean getBorder() {
return mBorder;
}
public void setBorder(boolean border) {
mBorder = border;
}
public float getBorderSize() {
return mBorderSize;
}
public void setBorderSize(float size) {
mBorderSize = size;
}
public int getBorderColor() {
return mBorderColor;
}
public void setBorderColor(int color) {
mBorderColor = color;
}
}

Wyświetl plik

@ -104,6 +104,9 @@ class LabelContainer {
writer.write("italic", label.getItalic());
writer.write("fore_color", label.getForeColor());
writer.write("back_color", label.getBackColor());
writer.write("border", label.getBorder());
writer.write("border_size", label.getBorderSize());
writer.write("border_color", label.getBorderColor());
}
private void readLabel(IReader reader, Label label) throws IOException {
@ -114,6 +117,9 @@ class LabelContainer {
label.setItalic(reader.readBoolean());
label.setForeColor(reader.readInt());
label.setBackColor(reader.readInt());
label.setBorder(reader.readBoolean());
label.setBorderSize(reader.readFloat());
label.setBorderColor(reader.readInt());
}
}

Wyświetl plik

@ -47,6 +47,7 @@ class LabelPainter {
@Override
public void draw(Canvas canvas) {
drawBorder(canvas, mX, mY);
canvas.drawText(mLabel.getText(), mX, mY, mPaint);
}
@ -55,6 +56,7 @@ class LabelPainter {
RectF bounds = new RectF(getBounds());
float rx = 10f;
float ry = 10f;
mPaint.setStrokeWidth(0f);
mPaint.setColor(Color.LTGRAY);
mPaint.setAlpha(100);
@ -65,15 +67,15 @@ class LabelPainter {
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(Color.RED);
bounds.inset(-5.0f, -5.0f);
bounds.inset(-5f, -5f);
canvas.drawRoundRect(bounds, rx, ry, mPaint);
mPaint.setColor(Color.GREEN);
bounds.inset(1.0f, 1.0f);
bounds.inset(1f, 1f);
canvas.drawRoundRect(bounds, rx, ry, mPaint);
mPaint.setColor(Color.BLUE);
bounds.inset(1.0f, 1.0f);
bounds.inset(1f, 1f);
canvas.drawRoundRect(bounds, rx, ry, mPaint);
setPaintSettings(mSizeFactor);
@ -84,9 +86,10 @@ class LabelPainter {
float factor = (dst.height() / (float) src.height());
float x = (mX - src.left) * factor;
float y = (mY - src.top) * factor;
setTextSize(factor * mSizeFactor);
setSizePaintSettings(factor * mSizeFactor);
drawBorder(canvas, x, y);
canvas.drawText(mLabel.getText(), x, y, mPaint);
setTextSize(mSizeFactor);
setSizePaintSettings(mSizeFactor);
}
@Override
@ -114,16 +117,35 @@ class LabelPainter {
return bounds;
}
private void setPaintSettings(float sizeFactor) {
mPaint.setAlpha(255);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mLabel.getForeColor());
mPaint.setTypeface(Typeface.create(mLabel.getFamilyName(), getTypeface()));
setTextSize(sizeFactor);
private void drawBorder(Canvas canvas, float x, float y) {
if (mLabel.getBorder()) {
setBorderPaintSettings();
canvas.drawText(mLabel.getText(), x, y, mPaint);
setTextPaintSettings();
}
}
private void setTextSize(float sizeFactor) {
mPaint.setTextSize(mLabel.getTextSize() * sizeFactor);
private void setPaintSettings(float sizeFactor) {
mPaint.setAlpha(255);
mPaint.setTypeface(Typeface.create(mLabel.getFamilyName(), getTypeface()));
setTextPaintSettings();
setSizePaintSettings(sizeFactor);
}
private void setBorderPaintSettings() {
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(mLabel.getBorderColor());
}
private void setTextPaintSettings() {
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mLabel.getForeColor());
}
private void setSizePaintSettings(float sizeFactor) {
float textSize = mLabel.getTextSize() * sizeFactor;
mPaint.setTextSize(textSize);
mPaint.setStrokeWidth(mLabel.getBorderSize() * textSize);
}
private int getTypeface() {
@ -149,6 +171,7 @@ class LabelPainter {
private OutDrawer(float min) {
mMinSize = min * 0.5f;
mPaint.setAlpha(255);
mPaint.setStrokeWidth(0f);
}
private void leftOut(RectF rect, float screenH) {

Wyświetl plik

@ -16,11 +16,26 @@
android:inputType="text"
android:textSize="32sp"/>
<Spinner
android:id="@+id/edit_font_family"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="32sp"/>
android:orientation="horizontal">
<Spinner
android:id="@+id/edit_font_family"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:minHeight="32sp"/>
<Spinner
android:id="@+id/edit_text_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.3"
android:minHeight="32sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
@ -42,12 +57,12 @@
android:checked="true"
android:text="@string/bold"/>
<Spinner
android:id="@+id/edit_text_size"
<CheckBox
android:id="@+id/edit_border"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.4"
android:minHeight="32sp"/>
android:text="@string/border"/>
</LinearLayout>

Wyświetl plik

@ -35,4 +35,5 @@
<string name="chooser_title">Send Bug Report:</string>
<string name="bold">Bold</string>
<string name="italic">Italic</string>
<string name="border">Border</string>
</resources>