public class ShaderActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                MyView myView = new MyView(this);                setContentView(myView);            }        public class MyView extends View{    //声明BitMap对象    private Bitmap bitmap;    //声明位图渲染图像    private Shader bitmapShader;    //声明线性渲染对象    private Shader linerGradient;    //声明光束渲染对象    private Shader radialGradient;    //声明梯度渲染对象    private Shader sweepGradient;    //声明混合渲染对象    private Shader composeGradient;        private Paint paint;    //声明颜色数组    private int[] colors;    private boolean isFrist = true;/** * @param context */public MyView(Context context) {super(context);//获得BitMap实例        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.openning);        //实例化画笔        paint = new Paint();        colors = new int[]{Color.RED,Color.GREEN,Color.BLUE};                //实例化位图渲染对象,X坐标方向重复图形,Y坐标方向镜像图形        bitmapShader = new BitmapShader(bitmap,TileMode.REPEAT,TileMode.MIRROR);        //实例化线性对象        linerGradient = new LinearGradient(0, 0, 100, 100, colors, null, TileMode.REPEAT);        //实例化光束        radialGradient = new RadialGradient(100,100,80,colors,null,TileMode.REPEAT);        //实例化梯度        sweepGradient = new SweepGradient(200,200,colors,null);        //实例化混合        composeGradient = new ComposeShader(linerGradient,radialGradient,PorterDuff.Mode.DARKEN);                setFocusable(true);}    /* (non-Javadoc)     * @see android.view.View#onDraw(android.graphics.Canvas)     */    @Override    protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    if(isFrist){    String content = "按上、下、左、右、中间键测试";    paint.setColor(Color.BLUE);    canvas.drawText(content, 0, content.length()-1, 20,20,paint);        }else{    //全屏画矩形    canvas.drawRect(0, 0, getWidth(), getHeight(), paint);    }    }        /* (non-Javadoc)     * @see android.view.View#onKeyDown(int, android.view.KeyEvent)     */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {    isFrist = false;    if(keyCode == KeyEvent.KEYCODE_DPAD_UP){    paint.setShader(bitmapShader);    }        if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN){    paint.setShader(linerGradient);    }        if(keyCode == KeyEvent.KEYCODE_DPAD_LEFT){    paint.setShader(radialGradient);    }        if(keyCode == KeyEvent.KEYCODE_DPAD_RIGHT){    paint.setShader(sweepGradient);    }        if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER){    paint.setShader(composeGradient);    }    //重绘界面    postInvalidate();    return super.onKeyDown(keyCode, event);    }    }}

更多相关文章

  1. 自定义 照相机
  2. android接收mjpg-streamer软件视频流
  3. 使用AnsyncTask异步类从网络上下载图片
  4. setonClickListener()的解释
  5. Android实例三:学习Service
  6. libgdx实例分析小记(一)
  7. android 发送e-mail实例
  8. SQLite 的应用实例
  9. Renderer (专门用于渲染3D 的接口 Renderer )()

随机推荐

  1. android 中生成xml文件
  2. Android拼接合并图片生成长图
  3. [Android 中级]Voip之CSipSimple类库的编
  4. 吐血推荐一些有用的网址1
  5. android实现EditText的多行输入框
  6. android 提升性能总结
  7. webrtc——web与android,android间通信
  8. android实用测试方法之Monkey与MonkeyRun
  9. android下发送中文短消息
  10. android在游戏中一直保持屏幕高亮