diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..39fb081 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..250b2e5 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..3b31283 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1e98c82 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + Android > Lint > Correctness > Messages + + + Manifest + + + Spelling + + + + + Android > Lint > Correctness > Messages + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f05103e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..a3f2796 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,30 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "24.0.1" + defaultConfig { + applicationId "com.quaap.computationaldemonology" + minSdkVersion 17 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.0.1' + compile 'com.android.support:design:25.0.1' + testCompile 'junit:junit:4.12' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..23dab4c --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/tom/Android/Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/com/quaap/computationaldemonology/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/quaap/computationaldemonology/ExampleInstrumentedTest.java new file mode 100644 index 0000000..99362dd --- /dev/null +++ b/app/src/androidTest/java/com/quaap/computationaldemonology/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.quaap.computationaldemonology; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.quaap.computationaldemonology", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..efc4cdf --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/quaap/computationaldemonology/Drawgorythm.java b/app/src/main/java/com/quaap/computationaldemonology/Drawgorythm.java new file mode 100644 index 0000000..3923784 --- /dev/null +++ b/app/src/main/java/com/quaap/computationaldemonology/Drawgorythm.java @@ -0,0 +1,241 @@ +package com.quaap.computationaldemonology; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; + +/** + * Created by tom on 12/4/16. + */ + +public abstract class Drawgorythm { + protected Paint mForeground; + + protected Paint mBackground; + + protected int mCenterX; + protected int mCenterY; + + protected int mWidth; + protected int mHeight; + + protected boolean done=false; + + public void setPaints(Paint foreground, Paint background) { + mForeground = foreground; + mBackground = background; + } + + public void canvasChanged(final Canvas canvas) { + mWidth = canvas.getWidth(); + mHeight = canvas.getHeight(); + mCenterX = mWidth / 2; + mCenterY = mHeight / 2; + done = false; + } + + public abstract void doDraw(final Canvas canvas, final long ticks); +} + + +abstract class Ring extends Drawgorythm { + + double r = 0; + double rad = 0; + + @Override + public void canvasChanged(final Canvas canvas) { + super.canvasChanged(canvas); + r = Math.min(mHeight, mWidth) / 3; + rad = 0; + } + +} + + + +class FuzzyRing extends Ring { + + @Override + public void doDraw(final Canvas canvas, final long ticks) { + + for (long j=0; jMath.PI*3) { + done=true; + return; + } + lastX = (float) (r * Math.sin(rad)) + mCenterX; + lastY = (float) (r * Math.cos(rad)) + mCenterY;; + rad += Math.PI * 2.0 / 5.0; + nextX = (float) (r * Math.sin(rad)) + mCenterX; + nextY = (float) (r * Math.cos(rad)) + mCenterY; + + x = lastX; + y = lastY; + + dX = nextX - lastX; + dY = nextY - lastY; + donext = false; + } else { + + for (long j = 0; j < ticks; j++) { + double fac = Math.abs(dY/dX) + 1; + double xp = x + Math.signum(dX)/( fac * 15 ); + double yp = lastY + dY * (x - lastX) / dX; + + //canvas.drawLine((float)x, (float)y, (float)xp, (float)yp, mForeground); + + rad2 = Math.atan((y-mCenterY)/(x-mCenterX)); + + for (int p=1; p<7; p++) { + int sizex = (int) (r / 10/p * Math.cos((Math.PI*p - rad2) * 10 * p)) + 1; + int sizey = (int) (r / 10/p * Math.sin((Math.PI*p - rad2) * 10 * p)) + 1; + canvas.drawPoint((float) xp + sizex, (float) yp + sizey, mForeground); + } + + x = xp; + y = yp; + + if (Math.round(x)==Math.round(nextX)) { + donext = true; + } + + } + } + //rad += Math.PI * 2.0 / 5.0; + + } + +} + +///////////////////////// +//penta +// double r = 0; +// double rad = 0; +// float lastX = 0; +// float lastY = 0; +// private void doDraw(final Canvas canvas) { +// // Log.d("GraphicDmn", "doDraw"); +// +// float mx = canvas.getWidth() / 2; +// float my = canvas.getHeight() / 2; +// +// +// if (rad/Math.PI < Math.PI*10) { +// +// r = Math.min(canvas.getWidth(), canvas.getHeight()) / 3; +// +// float x = (float) (r * Math.sin(rad)) + mx; +// float y = (float) (r * Math.cos(rad)) + my; +// if (lastX != 0 && lastY != 0) { +// canvas.drawLine(x,y, lastX, lastY, mLinePaint); +// // canvas.drawLine(x,y, mx, my, mLinePaint); +// } +// +// lastX = x; +// lastY = y; +// +// rad += Math.PI * 2.0 / 5.0; +// +// } +// +// +// } + +///////////////////////// +//fuzzy circle +// double r = 0; +// double rad = 0; +// private void doDraw(final Canvas canvas) { +// // Log.d("GraphicDmn", "doDraw"); +// +// +// +// if (rad/Math.PI < Math.PI*10) { +// float mx = canvas.getWidth() / 2; +// float my = canvas.getHeight() / 2; +// +// r = Math.min(canvas.getWidth(), canvas.getHeight()) / 3; +// +// for (int i = 0; i < 2; i++) { +// double rad1 = rad; +// if (i == 1) rad1 = i * Math.PI - rad; +// float x = (float) (r * Math.sin(rad1)); +// float y = (float) (r * Math.cos(rad1)); +// double rnd = Math.random(); +// int sizex = (int) (rnd * 4 * r / 10 * Math.sin(rad1)) + 1; +// int sizey = (int) (rnd * 4 * r / 10 * Math.cos(rad1)) + 1; +// canvas.drawLine(mx + x, my + y, mx + x + sizex, my + y + sizey, mLinePaint); +// } +// +// rad += .05; +// } +// +// } diff --git a/app/src/main/java/com/quaap/computationaldemonology/GraphicDemonActivity.java b/app/src/main/java/com/quaap/computationaldemonology/GraphicDemonActivity.java new file mode 100644 index 0000000..a14db1a --- /dev/null +++ b/app/src/main/java/com/quaap/computationaldemonology/GraphicDemonActivity.java @@ -0,0 +1,47 @@ +package com.quaap.computationaldemonology; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +public class GraphicDemonActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_graphic_demon); + GraphicDmn dmnview = (GraphicDmn) findViewById(R.id.dmnview); + + + } + + @Override + protected void onStart() { + super.onStart(); + GraphicDmn dmnview = (GraphicDmn) findViewById(R.id.dmnview); + dmnview.unpause(); + } + + @Override + protected void onStop() { + super.onStop(); + GraphicDmn dmnview = (GraphicDmn) findViewById(R.id.dmnview); + dmnview.pause(); + } + /** + * Dispatch onPause() to fragments. + */ + @Override + protected void onPause() { + super.onPause(); + GraphicDmn dmnview = (GraphicDmn) findViewById(R.id.dmnview); + dmnview.pause(); + } + + + @Override + protected void onResume() { + super.onResume(); + GraphicDmn dmnview = (GraphicDmn) findViewById(R.id.dmnview); + dmnview.unpause(); + } +} diff --git a/app/src/main/java/com/quaap/computationaldemonology/GraphicDmn.java b/app/src/main/java/com/quaap/computationaldemonology/GraphicDmn.java new file mode 100644 index 0000000..2ffa924 --- /dev/null +++ b/app/src/main/java/com/quaap/computationaldemonology/GraphicDmn.java @@ -0,0 +1,321 @@ +package com.quaap.computationaldemonology; + +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.util.Log; +import android.view.SurfaceHolder; +import android.view.SurfaceView; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by tom on 12/2/16. + */ + +public class GraphicDmn extends SurfaceView implements SurfaceHolder.Callback { + + private GraphicDmnThread mThread; + + private final Paint mLinePaint; + + private final Paint mBgColor; + + Bitmap viewdata; + Canvas passCanvas; + + List drawers = new ArrayList<>(); + + public GraphicDmn(Context context, AttributeSet attrs) { + super(context, attrs); + + Log.d("GraphicDmn", "Constructor"); + final SurfaceHolder holder = getHolder(); + holder.addCallback(this); + + // Initialize paints for speedometer + mLinePaint = new Paint(); + //mLinePaint.setAntiAlias(true); + mLinePaint.setARGB(255, 0, 127, 127); + + mBgColor = new Paint(); + // mBgColor.setAntiAlias(true); + mBgColor.setARGB(255, 0, 23, 12); + + Drawgorythm d1 = new FuzzyRing(); + d1.setPaints(mLinePaint, mBgColor); + //drawers.add(d1); + + Drawgorythm d2 = new PentaRing(); + d2.setPaints(mLinePaint, mBgColor); + drawers.add(d2); + +// Synth synth = new Synth(); +// synth.genSaw(64); + // blackCanvas(holder); + + } + + + @Override + public void surfaceCreated(SurfaceHolder surfaceHolder) { + Log.d("GraphicDmn", "surfaceCreated"); + + mThread = new GraphicDmnThread(surfaceHolder, new Handler() { + @Override + public void handleMessage(final Message m) { + // mStatusText.setVisibility(m.getData().getInt("viz")); + // mStatusText.setText(m.getData().getString("text")); + } + }); + + + } + + @Override + public void surfaceChanged(final SurfaceHolder surfaceHolder, final int format, final int width, final int height) { + Log.d("GraphicDmn", "surfaceChanged"); + + if (mThread!=null) { + if (!mThread.isRunning()) { + mThread.start(); + } + + Canvas c = null; + try { + c = surfaceHolder.lockCanvas(null); + synchronized (surfaceHolder) { + viewdata = Bitmap.createBitmap(c.getWidth(), c.getHeight(), Bitmap.Config.ARGB_8888); + passCanvas = new Canvas(viewdata); + passCanvas.drawPaint(mBgColor); + + for(Drawgorythm d: drawers) { + d.canvasChanged(passCanvas); + } + } + } finally { + + if (c != null) { + surfaceHolder.unlockCanvasAndPost(c); + } + } + + } + } + + @Override + public void surfaceDestroyed(SurfaceHolder surfaceHolder) { + Log.d("GraphicDmn", "surfaceDestroyed"); + mThread.stopRunning(); + try { + mThread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void pause() { + if (mThread!=null) mThread.pauseRunning(); + } + + public void unpause() { + if (mThread!=null) mThread.unpauseRunning(); + } + + + class GraphicDmnThread extends Thread { + + /** Message handler used by thread to interact with TextView */ + private final Handler mHandler; + /** Handle to the surface manager object we interact with */ + private final SurfaceHolder mSurfaceHolder; + + //private final Context mContext; + + + private boolean mPaused = false; + private boolean mRun = false; + + + public GraphicDmnThread(final SurfaceHolder surfaceHolder, + final Handler handler) { + // get handles to some important objects + mSurfaceHolder = surfaceHolder; + mHandler = handler; + } + + @Override + public void run() { + Log.d("GraphicDmnThread", "run"); + mRun = true; + while (mRun) { + if (mPaused) { + try { + sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } else { + Canvas c = null; + try { + c = mSurfaceHolder.lockCanvas(null); + synchronized (mSurfaceHolder) { + + doDraw(c); + } + } finally { + if (c != null) { + mSurfaceHolder.unlockCanvasAndPost(c); + } + } + } + } + } + + + public void pauseRunning() { + mPaused = true; + } + + public void unpauseRunning() { + mPaused = false; + } + + + + public void stopRunning() { + Log.d("GraphicDmnThread", "stopRunning"); + mRun = false; + } + + public boolean isRunning() { + return mRun; + } + } + + + + long step = 33; + long lasttime = System.currentTimeMillis(); + + private void doDraw(final Canvas canvas) { + // Log.d("GraphicDmn", "doDraw"); + + final long now = System.currentTimeMillis(); + + if (now - lasttime > step) { + //Log.d("GraphicDmn", "doDraw" + lasttime + " " + now); + for (Drawgorythm d : drawers) { + d.doDraw(passCanvas, System.currentTimeMillis() - lasttime); + } + lasttime = System.currentTimeMillis(); + } + canvas.drawBitmap(viewdata, 0, 0, null); + + } + + +/////////////////////////// +////barbed circle +// double r = 0; +// double rad = 0; +// private void doDraw(final Canvas canvas) { +// // Log.d("GraphicDmn", "doDraw"); +// +// +// +// if (rad/Math.PI < Math.PI*10) { +// float mx = canvas.getWidth() / 2; +// float my = canvas.getHeight() / 2; +// +// r = Math.min(canvas.getWidth(), canvas.getHeight()) / 3; +// +// for (int i = 0; i < 2; i++) { +// double rad1 = rad; +// if (i == 1) rad1 = i * Math.PI - rad; +// float x = (float) (r * Math.sin(rad1)); +// float y = (float) (r * Math.cos(rad1)); +// double rnd = Math.random(); +// int sizex = (int) (r / 10 * Math.sin(rad1*50)) + 1; +// int sizey = (int) (r / 10 * Math.cos(rad1*50)) + 1; +// canvas.drawLine(mx + x, my + y, mx + x + sizex, my + y + sizey, mLinePaint); +// } +// +// rad += .05; +// } +// +// } + + +///////////////////////// +//penta +// double r = 0; +// double rad = 0; +// float lastX = 0; +// float lastY = 0; +// private void doDraw(final Canvas canvas) { +// // Log.d("GraphicDmn", "doDraw"); +// +// float mx = canvas.getWidth() / 2; +// float my = canvas.getHeight() / 2; +// +// +// if (rad/Math.PI < Math.PI*10) { +// +// r = Math.min(canvas.getWidth(), canvas.getHeight()) / 3; +// +// float x = (float) (r * Math.sin(rad)) + mx; +// float y = (float) (r * Math.cos(rad)) + my; +// if (lastX != 0 && lastY != 0) { +// canvas.drawLine(x,y, lastX, lastY, mLinePaint); +// // canvas.drawLine(x,y, mx, my, mLinePaint); +// } +// +// lastX = x; +// lastY = y; +// +// rad += Math.PI * 2.0 / 5.0; +// +// } +// +// +// } + +///////////////////////// +//fuzzy circle +// double r = 0; +// double rad = 0; +// private void doDraw(final Canvas canvas) { +// // Log.d("GraphicDmn", "doDraw"); +// +// +// +// if (rad/Math.PI < Math.PI*10) { +// float mx = canvas.getWidth() / 2; +// float my = canvas.getHeight() / 2; +// +// r = Math.min(canvas.getWidth(), canvas.getHeight()) / 3; +// +// for (int i = 0; i < 2; i++) { +// double rad1 = rad; +// if (i == 1) rad1 = i * Math.PI - rad; +// float x = (float) (r * Math.sin(rad1)); +// float y = (float) (r * Math.cos(rad1)); +// double rnd = Math.random(); +// int sizex = (int) (rnd * 4 * r / 10 * Math.sin(rad1)) + 1; +// int sizey = (int) (rnd * 4 * r / 10 * Math.cos(rad1)) + 1; +// canvas.drawLine(mx + x, my + y, mx + x + sizex, my + y + sizey, mLinePaint); +// } +// +// rad += .05; +// } +// +// } + +} diff --git a/app/src/main/java/com/quaap/computationaldemonology/Synth.java b/app/src/main/java/com/quaap/computationaldemonology/Synth.java new file mode 100644 index 0000000..911fd76 --- /dev/null +++ b/app/src/main/java/com/quaap/computationaldemonology/Synth.java @@ -0,0 +1,81 @@ +package com.quaap.computationaldemonology; + +import android.media.AudioFormat; +import android.media.AudioManager; +import android.media.AudioTrack; +import android.os.AsyncTask; + +/** + * Created by tom on 12/2/16. + */ + +public class Synth { + + private int sampleRate = 16000; + AudioTrack mAudioTrack; + + public Synth() { + int bufferSize = AudioTrack.getMinBufferSize(sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); + + mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize, AudioTrack.MODE_STREAM); + + mAudioTrack.play(); + } + + public void write(short[] buffer) { + mAudioTrack.write(buffer, 0, buffer.length); + } + + public void close() { + try { + mAudioTrack.pause(); + mAudioTrack.flush(); + } finally { + mAudioTrack.release(); + } + + } + + + + public void genStatic() { + int entries = sampleRate*10; + short [] data = new short[entries]; + + for (int i=0; i() { + @Override + protected Void doInBackground(Float... hzs) { + for(Float hz: hzs) { + + float period = sampleRate / hz; + + int samples = 10; + int entries = sampleRate; + short[] data = new short[entries]; + + for (int sample=0; sample + + + + + diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000..eac875a --- /dev/null +++ b/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..cde69bc Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..c133a0c Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..bfa42f0 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..324e72c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..aee44e1 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml new file mode 100644 index 0000000..dbbdd40 --- /dev/null +++ b/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3ab3e9c --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ + + + #3F51B5 + #303F9F + #FF4081 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..cef3abc --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,7 @@ + + + 16dp + 16dp + 16dp + 8dp + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..643b51f --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + ComputationalDemonology + Settings + Hello World from section: %1$d + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..545b9c6 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + +