app/manifests/AndroidManifest.xml - to force orientation
app/res/drawable - pictures
There are a number of colour files, called "colour0", "colour1", "colour2" etc. They are loaded into an array defined in in app/java/com.(the project name)/MainActivity and used in app/java/com.(the project name)/ImagePalette and app/java/com.(the project name)/ImageTile. The number of them (10) is referenced in app/res/layout/activity_main.xml.
There is also a smaller version of each colour file, called "colour0sm" etc. used in app/java/com.(the project name)/ImageRepeat.
app/res/mipmap/ic_launcher.png/ - icon for launching app
app/res/values/strings.xml - strings
TessellationsChoose colour, tap in grid.newwidedeep123456
app/res/layout/activity_main.xml - screen format
app/java/com.(the project name)/MainActivity - main code for app
package com.edkins.tessellations;
import ...
public class MainActivity extends AppCompatActivity {
// colour selected - starts as red
int paint = 1;
public static int wide = 4;
public static int deep = 3;
public static int tileRow = 10;
public static int tileMax = 6;
public static int repeatMax = 30;
// tiles - for setting up tessera
public static int [] tile = new int [6 * 6];
// Colours
public static Integer[] palette = {
R.drawable.colour0, R.drawable.colour1, R.drawable.colour2, R.drawable.colour3,
R.drawable.colour4, R.drawable.colour5, R.drawable.colour6, R.drawable.colour7,
R.drawable.colour8, R.drawable.colour9
};
public static Integer[] palettesm = {
R.drawable.colour0sm, R.drawable.colour1sm, R.drawable.colour2sm, R.drawable.colour3sm,
R.drawable.colour4sm, R.drawable.colour5sm, R.drawable.colour6sm, R.drawable.colour7sm,
R.drawable.colour8sm, R.drawable.colour9sm
};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView palette = (GridView) findViewById(R.id.paletteView);
palette.setAdapter(new ImagePalette(this));
palette.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView> parent, View v,
int position, long id) {
processPaletteClick(position);
}
});
GridView tile = (GridView) findViewById(R.id.tileView);
tile.setAdapter(new ImageTile(this));
tile.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView> parent, View v, int position, long id) {
processTileClick(position);
}
});
GridView repeat = (GridView) findViewById(R.id.repeatView);
repeat.setNumColumns(repeatMax);
repeat.setAdapter(new ImageRepeat(this));
RadioButton width = (RadioButton) findViewById(R.id.width4);
width.setChecked(true);
wide = 4;
RadioButton depth = (RadioButton) findViewById(R.id.depth3);
depth.setChecked(true);
deep = 3;
}
public void processPaletteClick(int position) {
paint = position;
}
public void processTileClick(int position) {
int y = position / tileRow;
int x = position % tileRow;
if (x >= wide) {return;}
int tilePosition = y * tileMax + x;
if (tile[tilePosition] == paint) {tile[tilePosition]=0;}
else {tile[tilePosition] = paint;}
redo();
}
public void doClear(View view) {
for (int i=0; i<(6 * 6); i++) {tile[i] = 0;}
redo();
}
public void clickWide1(View view) {wide = 1; redo();}
public void clickWide2(View view) {wide = 2; redo();}
public void clickWide3(View view) {wide = 3; redo();}
public void clickWide4(View view) {wide = 4; redo();}
public void clickWide5(View view) {wide = 5; redo();}
public void clickWide6(View view) {wide = 6; redo();}
public void clickDeep1(View view) {deep = 1; redo();}
public void clickDeep2(View view) {deep = 2; redo();}
public void clickDeep3(View view) {deep = 3; redo();}
public void clickDeep4(View view) {deep = 4; redo();}
public void clickDeep5(View view) {deep = 5; redo();}
public void clickDeep6(View view) {deep = 6; redo();}
// redo screen
public void redo() {
GridView tile = (GridView) findViewById(R.id.tileView);
tile.setAdapter(new ImageTile(this));
GridView repeat = (GridView) findViewById(R.id.repeatView);
repeat.setAdapter(new ImageRepeat(this));
}
}
app/java/com.(the project name)/ImagePalette - code for palette gridview. You create this new file by right-clicking on the MainActvity and select New, then Java class
package com.edkins.tessellations;
import ...
public class ImagePalette extends BaseAdapter {
private AppCompatActivity mContext;
public ImagePalette(AppCompatActivity c) {mContext = c;}
public int getCount() {return MainActivity.palette.length;}
public Object getItem(int position) {return null;}
public long getItemId(int position) {return 0;}
// create new ImageView for palette
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
}
else {
imageView = (ImageView) convertView;
}
// initialise the view element (to one of the colours)
imageView.setImageResource(MainActivity.palette[position]);
return imageView;
}
}
app/java/com.(the project name)/ImageTile - code for tile gridview - a new file, see above
package com.edkins.tessellations;
import ...
public class ImageTile extends BaseAdapter {
private AppCompatActivity mContext;
public ImageTile(AppCompatActivity c) {mContext = c;}
public int getCount() {return MainActivity.tileRow * MainActivity.deep;}
public Object getItem(int position) {return null;}
public long getItemId(int position) {return 0;}
// create new ImageView for tessera
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
GridView tile = (GridView) mContext.findViewById(R.id.tileView);
int w = tile.getWidth() / MainActivity.tileRow;
imageView.setLayoutParams(new GridView.LayoutParams(w, w));
} else {
imageView = (ImageView) convertView;
}
// initialise the view element (to whatever is in array tile[])
int y = position / MainActivity.tileRow;
int x = position % MainActivity.tileRow;
if (x < MainActivity.wide) {
int sub = MainActivity.tile[y * MainActivity.tileMax + x];
imageView.setImageResource(MainActivity.palette[sub]);
}
else {imageView.setImageResource(R.drawable.colour0sm);}
return imageView;
}
}
app/java/com.(the project name)/ImageRepeat - code for repeat gridview - a new file, see above
package com.edkins.tessellations;
import ...
public class ImageRepeat extends BaseAdapter {
private AppCompatActivity mContext;
public ImageRepeat(AppCompatActivity c) {mContext = c;}
public int getCount() {return MainActivity.repeatMax * MainActivity.repeatMax;}
public Object getItem(int position) {return null;}
public long getItemId(int position) {return 0;}
// create new ImageView for palette
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
GridView tile = (GridView) mContext.findViewById(R.id.tileView);
int w = tile.getWidth() / MainActivity.repeatMax;
imageView.setLayoutParams(new GridView.LayoutParams(w, w));
}
else {
imageView = (ImageView) convertView;
}
// initialise the view element (to whatever is in array tile[])
int y = position / MainActivity.repeatMax; y = y % MainActivity.deep;
int x = position % MainActivity.repeatMax; x = x % MainActivity.wide;
int tilePosition = y * MainActivity.tileMax + x;
int sub = MainActivity.tile[tilePosition];
imageView.setImageResource(MainActivity.palettesm[sub]);
return imageView;
}
}
Index to my other websites