Skip to content

Commit

Permalink
fix accessibility image content description
Browse files Browse the repository at this point in the history
  • Loading branch information
Hans Georg Zojer authored and Hans Georg Zojer committed Oct 15, 2018
1 parent b71a491 commit b8bb032
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 154 deletions.
2 changes: 1 addition & 1 deletion app/src/main/java/at/hgz/dice/ChooseDiceActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
if (vh.dice.isImage()) {
vh.resultsImage.setImageResource(vh.dice.getImage());
vh.resultsImage.setVisibility(View.VISIBLE);
vh.resultsImage.setContentDescription(vh.dice.getContentDescription());
vh.resultsImage.setContentDescription(getContext().getString(vh.dice.getContentDescriptionId()));
} else {
vh.resultsImage.setVisibility(View.GONE);
vh.resultsImage.setContentDescription(null);
Expand Down
226 changes: 75 additions & 151 deletions app/src/main/java/at/hgz/dice/Dice.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,71 +5,39 @@ public enum Dice {
/**
* 2
*/
COIN {
COIN(2, "Coin", R.string.coin, R.drawable.ic_w2) {
private int[] images = {
R.drawable.ic_w2d1,
R.drawable.ic_w2d2,
};
@Override
public int getImage() {
return R.drawable.ic_w2;
}
@Override
public String getText() {
return "Coin";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
protected int[] getImages() { return images; }
@Override
public String getText(double d) {
return toInt(d) == 0 ? "Head" : "Tail";
}
@Override
public String getContentDescription() { return "@string/coin"; }
private int toInt(double d) {
return (int) (d * 2);
}
public int getContentDescriptionId(double d) { return toInt(d) == 0 ? R.string.head : R.string.tail; };
},

/**
* 4
*/
TETRAHEDRON {
TETRAHEDRON(4, "1 ... 4", R.string.tetrahedron, R.drawable.ic_w4) {
private int[] images = {
R.drawable.ic_w4d1,
R.drawable.ic_w4d2,
R.drawable.ic_w4d3,
R.drawable.ic_w4d4,
};
@Override
public int getImage() {
return R.drawable.ic_w4;
}
@Override
public String getText() {
return "1 ... 4";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
@Override
public String getText(double d) {
return "" + (1 + toInt(d));
}
@Override
public String getContentDescription() { return "@string/tetrahedron"; }
private int toInt(double d) {
return (int) (d * 4);
}
protected int[] getImages() { return images; }
},

/**
* 6
*/
CUBE {
CUBE(6, "1 ... 6", R.string.cube, R.drawable.ic_w6) {
private int[] images = {
R.drawable.ic_w6d1,
R.drawable.ic_w6d2,
Expand All @@ -79,32 +47,13 @@ private int toInt(double d) {
R.drawable.ic_w6d6,
};
@Override
public int getImage() {
return R.drawable.ic_w6;
}
@Override
public String getText() {
return "1 ... 6";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
@Override
public String getText(double d) {
return "" + (1 + toInt(d));
}
@Override
public String getContentDescription() { return "@string/cube"; }
private int toInt(double d) {
return (int) (d * 6);
}
protected int[] getImages() { return images; }
},

/**
* 8
*/
OCTAHEDRON {
OCTAHEDRON(8, "1 ... 8", R.string.octahedron, R.drawable.ic_w8) {
private int[] images = {
R.drawable.ic_w8d1,
R.drawable.ic_w8d2,
Expand All @@ -116,60 +65,23 @@ private int toInt(double d) {
R.drawable.ic_w8d8,
};
@Override
public int getImage() {
return R.drawable.ic_w8;
}
@Override
public String getText() {
return "1 ... 8";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
@Override
public String getText(double d) {
return "" + (1 + toInt(d));
}
@Override
public String getContentDescription() { return "@string/octahedron"; }
private int toInt(double d) {
return (int) (d * 8);
}
protected int[] getImages() { return images; }
},

/**
* 10
*/
PENTAGONAL_TRAPEZOHEDRON {
@Override
public int getImage() {
// TODO Auto-generated method stub
throw new RuntimeException("Not implemented!");
}
PENTAGONAL_TRAPEZOHEDRON(10, "1 ... 10", R.string.pentagonal_trapezohedron, -1) {
@Override
public String getText() {
// TODO Auto-generated method stub
throw new RuntimeException("Not implemented!");
}
@Override
public int getImage(double d) {
// TODO Auto-generated method stub
throw new RuntimeException("Not implemented!");
}
@Override
public String getText(double d) {
// TODO Auto-generated method stub
protected int[] getImages() {
throw new RuntimeException("Not implemented!");
}
@Override
public String getContentDescription() { return "@string/pentagonal_trapezohedron"; }
},

/**
* 12
*/
DODECAHEDRON {
DODECAHEDRON(12, "1 ... 12", R.string.dodecahedron, R.drawable.ic_w12) {
private int[] images = {
R.drawable.ic_w12d1,
R.drawable.ic_w12d2,
Expand All @@ -185,32 +97,13 @@ public String getText(double d) {
R.drawable.ic_w12d12,
};
@Override
public int getImage() {
return R.drawable.ic_w12;
}
@Override
public String getText() {
return "1 ... 12";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
@Override
public String getText(double d) {
return "" + (1 + toInt(d));
}
@Override
public String getContentDescription() { return "@string/dodecahedron"; }
private int toInt(double d) {
return (int) (d * 12);
}
protected int[] getImages() { return images; }
},

/**
* 20
*/
ICOSAHEDRON {
ICOSAHEDRON(20, "1 ... 20", R.string.icosahedron, R.drawable.ic_w20) {
private int[] images = {
R.drawable.ic_w20d1,
R.drawable.ic_w20d2,
Expand All @@ -234,43 +127,74 @@ private int toInt(double d) {
R.drawable.ic_w20d20,
};
@Override
public int getImage() {
return R.drawable.ic_w20;
}
@Override
public String getText() {
return "1 ... 20";
}
@Override
public int getImage(double d) {
return images[toInt(d)];
}
@Override
public String getText(double d) {
return "" + (1 + toInt(d));
}
@Override
public String getContentDescription() { return "@string/icosahedron"; }
private int toInt(double d) {
return (int) (d * 20);
}
protected int[] getImages() { return images; }
};


private static final int[] faces = {
R.string.face_1,
R.string.face_2,
R.string.face_3,
R.string.face_4,
R.string.face_5,
R.string.face_6,
R.string.face_7,
R.string.face_8,
R.string.face_9,
R.string.face_10,
R.string.face_11,
R.string.face_12,
R.string.face_13,
R.string.face_14,
R.string.face_15,
R.string.face_16,
R.string.face_17,
R.string.face_18,
R.string.face_19,
R.string.face_20,
};

private final int numberOfFaces;

private final String text;

private final int contentDescriptionId;

private final int image;

Dice(int numberOfFaces, String text, int contentDescriptionId, int image) {
this.numberOfFaces = numberOfFaces;
this.text = text;
this.contentDescriptionId = contentDescriptionId;
this.image = image;
}

public int getNumberOfFaces() { return numberOfFaces; }

public int getImage() { return image; };

public String getText() { return text; };

public int getContentDescriptionId() { return contentDescriptionId; };

public boolean isImage() {
return true;
}

public boolean isText() {
return false;
}

public abstract int getImage();

public abstract String getText();

public abstract int getImage(double d);

public abstract String getText(double d);

public abstract String getContentDescription();
public int getImage(double d) {
return getImages()[toInt(d)];
}

public String getText(double d) {
return "" + (1 + toInt(d));
}

public int getContentDescriptionId(double d) { return faces[toInt(d)]; };

protected abstract int[] getImages();

protected int toInt(double d) { return (int) (d * getNumberOfFaces()); };
}
2 changes: 1 addition & 1 deletion app/src/main/java/at/hgz/dice/DiceActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ public View getView(int position, View convertView, ViewGroup parent) {
for (int i = 0; i < length; i++) {
vh.resultsImages.get(i).setImageResource(vh.result.getImage(i));
vh.resultsImages.get(i).setVisibility(View.VISIBLE);
vh.resultsImages.get(i).setContentDescription(vh.result.getContentDescription(i));
vh.resultsImages.get(i).setContentDescription(getContext().getString(vh.result.getContentDescriptionId(i)));
}
convertView.setBackgroundColor((position & 1) == 0 ? 0xffdddddd : 0xffeeeeee);
/*if (vh.result.isText()) {
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/at/hgz/dice/Result.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ public int getImage(int i) {
return dice.getImage(values[i]);
}

public String getContentDescription(int i) { return "" + (1 + values[i]); }
public int getContentDescriptionId(int i) {
return dice.getContentDescriptionId(values[i]);
}

public boolean isText() {
return dice.isText();
Expand Down
22 changes: 22 additions & 0 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,27 @@
<string name="pentagonal_trapezohedron">Pentagonales Trapezoeder</string>
<string name="dodecahedron">Dodekaeder</string>
<string name="icosahedron">Ikosaeder</string>
<string name="head">Kopf</string>
<string name="tail">Zahl</string>
<string name="face_1">1</string>
<string name="face_2">2</string>
<string name="face_3">3</string>
<string name="face_4">4</string>
<string name="face_5">5</string>
<string name="face_6">6</string>
<string name="face_7">7</string>
<string name="face_8">8</string>
<string name="face_9">9</string>
<string name="face_10">10</string>
<string name="face_11">11</string>
<string name="face_12">12</string>
<string name="face_13">13</string>
<string name="face_14">14</string>
<string name="face_15">15</string>
<string name="face_16">16</string>
<string name="face_17">17</string>
<string name="face_18">18</string>
<string name="face_19">19</string>
<string name="face_20">20</string>

</resources>

0 comments on commit b8bb032

Please sign in to comment.