📄 opengl.java
字号:
/*** * Excerpted from "Hello, Android!", * published by The Pragmatic Bookshelf. * Copyrights apply to this code. It may not be used to create training material, * courses, books, articles, and the like. Contact us if you are in doubt. * We make no guarantees that this code is fit for any purpose. * Visit http://www.pragmaticprogrammer.com/titles/eband for more book information.***/package com.mot.opengl;import android.app.Activity;import android.graphics.PixelFormat;import android.graphics.Point;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Toast;public class OpenGL extends Activity { public static final int TYPE_CUBE = 100; public static final int TYPE_RECTANGLE = 101; private static final int MENU_CUBE = Menu.FIRST + 1; private static final int MENU_RECTANGLE = MENU_CUBE + 1; private GLView cube_view; private GLView rectangle_view; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startRectangle(); } private void startCube() { //if ( rectangle_view != null ) // rectangle_view.surfaceDestroyed(rectangle_view.getHolder()); cube_view = new GLView(this, TYPE_CUBE); cube_view.setOnClickListener(new OnClickListener () { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(),"Click Cube",Toast.LENGTH_SHORT).show(); } }); cube_view.getHolder().setFormat(PixelFormat.TRANSPARENT); cube_view.setOnTouchListener(mcubeTouchListener); setContentView(cube_view); } private void startRectangle() { //if ( cube_view != null ) // cube_view.surfaceDestroyed(cube_view.getHolder()); rectangle_view = new GLView(this, TYPE_RECTANGLE); rectangle_view.setOnClickListener(new OnClickListener () { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(),"Click Rectangle",Toast.LENGTH_SHORT).show(); } }); //rectangle_view.setOnTouchListener(mrectangleTouchListener); rectangle_view.getHolder().setFormat(PixelFormat.TRANSLUCENT); setContentView(rectangle_view); } @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, MENU_CUBE, 0, R.string.menu_cube) .setIcon(R.drawable.ic_menu_gallery) .setAlphabeticShortcut('C'); menu.add(0, MENU_RECTANGLE, 0, R.string.menu_rectangle) .setIcon(R.drawable.ic_menu_gallery) .setAlphabeticShortcut('C'); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_CUBE: startCube(); return true; case MENU_RECTANGLE: startRectangle(); return true; } return super.onOptionsItemSelected(item); } private View.OnTouchListener mcubeTouchListener = new View.OnTouchListener(){ Point start, last; @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub final int action = arg1.getAction(); final float x = arg1.getX(); final float y = arg1.getY(); switch (action) { case MotionEvent.ACTION_DOWN: Log.e("a222302" ,"OnTouchListener ACTION_DOWN"); start = new Point((int)x, (int)y); last = start; cube_view.getThread().setRunning(false); break; case MotionEvent.ACTION_MOVE: float angle0 = Math.abs(Math.abs((last.x - start.x) / 2f % 90) - 45); float angle1 = Math.abs(Math.abs((x - start.x) / 2f % 90) - 45); //cube_view.scrollBy(20, 0); last = new Point((int)x, (int)y); break; case MotionEvent.ACTION_UP: Log.e("a222302" ,"OnTouchListener ACTION_UP"); cube_view.getThread().setRunning(true); break; } return false; } };}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -