summaryrefslogtreecommitdiff
path: root/samples/Snake/src/com/example/android/snake/BackgroundView.java
diff options
context:
space:
mode:
Diffstat (limited to 'samples/Snake/src/com/example/android/snake/BackgroundView.java')
-rwxr-xr-xsamples/Snake/src/com/example/android/snake/BackgroundView.java90
1 files changed, 90 insertions, 0 deletions
diff --git a/samples/Snake/src/com/example/android/snake/BackgroundView.java b/samples/Snake/src/com/example/android/snake/BackgroundView.java
new file mode 100755
index 000000000..bda571e07
--- /dev/null
+++ b/samples/Snake/src/com/example/android/snake/BackgroundView.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.snake;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.View;
+
+import java.util.Arrays;
+
+/**
+ * Background View: Draw 4 full-screen RGBY triangles
+ */
+public class BackgroundView extends View {
+
+ private int[] mColors = new int[4];
+
+ private final short[] mIndices =
+ { 0, 1, 2, 0, 3, 4, 0, 1, 4 // Corner points for triangles (with offset = 2)
+ };
+
+ private float[] mVertexPoints = null;
+
+ public BackgroundView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setFocusable(true);
+
+ // retrieve colors for 4 segments from styleable properties
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BackgroundView);
+ mColors[0] = a.getColor(R.styleable.BackgroundView_colorSegmentOne, Color.RED);
+ mColors[1] = a.getColor(R.styleable.BackgroundView_colorSegmentTwo, Color.YELLOW);
+ mColors[2] = a.getColor(R.styleable.BackgroundView_colorSegmentThree, Color.BLUE);
+ mColors[3] = a.getColor(R.styleable.BackgroundView_colorSegmentFour, Color.GREEN);
+
+ a.recycle();
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ assert(mVertexPoints != null);
+
+ // Colors for each vertex
+ int[] mFillColors = new int[mVertexPoints.length];
+
+ for (int triangle = 0; triangle < mColors.length; triangle++) {
+ // Set color for all vertex points to current triangle color
+ Arrays.fill(mFillColors, mColors[triangle]);
+
+ // Draw one triangle
+ canvas.drawVertices(Canvas.VertexMode.TRIANGLES, mVertexPoints.length, mVertexPoints,
+ 0, null, 0, // No Textures
+ mFillColors, 0, mIndices,
+ triangle * 2, 3, // Use 3 vertices via Index Array with offset 2
+ new Paint());
+ }
+ }
+
+ @Override
+ protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ super.onSizeChanged(w, h, oldw, oldh);
+
+ // Construct our center and four corners
+ mVertexPoints = new float[] {
+ w / 2, h / 2,
+ 0, 0,
+ w, 0,
+ w, h,
+ 0, h
+ };
+ }
+
+}