Android的2D绘图(二)
2014-03-22 12:11
465 查看
这里面给出几个我比较喜欢的两个例子。这一节比较简单。
一、设置图像的透明度
直接看代码
二、旋转图像
也是直接看代码
2D绘图就到这里了,这里只是一些比较的画图,如果想要实现更加复杂的绘图,就需要进一步学习OpenGL ES技术了。
一、设置图像的透明度
直接看代码
package mobile.android.alpha.bitmap; import java.io.InputStream; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class Main extends Activity implements OnSeekBarChangeListener { public static int alpha = 100; private MyView myView; @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { alpha = progress; setTitle("alpha:" + progress); myView.invalidate(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout linearLayout = new LinearLayout(this); linearLayout.setOrientation(LinearLayout.VERTICAL); myView = new MyView(this); myView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 300)); SeekBar seekBar = new SeekBar(this); seekBar.setMax(255); seekBar.setProgress(alpha); seekBar.setOnSeekBarChangeListener(this); linearLayout.addView(myView); linearLayout.addView(seekBar); linearLayout.setBackgroundColor(Color.WHITE); setContentView(linearLayout); setTitle("alpha:" + alpha); } private class MyView extends View { private Bitmap bitmap; public MyView(Context context) { super(context); InputStream is = getResources().openRawResource(R.drawable.image); bitmap = BitmapFactory.decodeStream(is); setBackgroundColor(Color.WHITE); } @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setAlpha(alpha); canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap .getHeight()), new Rect(40, 40, 200, 200), paint); } } }
二、旋转图像
也是直接看代码
package mobile.android.rotate.anim; import java.io.InputStream; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.os.Bundle; import android.view.View; public class Main extends Activity { class MyView extends View { private Bitmap bitmap1; private Bitmap bitmap2; private int digree1 = 0; private int digree2 = 360; public MyView(Context context) { super(context); setBackgroundColor(Color.WHITE); InputStream is = getResources().openRawResource(R.drawable.cross); bitmap1 = BitmapFactory.decodeStream(is); is = getResources().openRawResource(R.drawable.ball); bitmap2 = BitmapFactory.decodeStream(is); } @Override protected void onDraw(Canvas canvas) { Matrix matrix = new Matrix(); if (digree1 > 360) digree1 = 0; if(digree2 < 0) digree2 = 360; matrix.setRotate(digree1++, 160, 240); canvas.setMatrix(matrix); canvas.drawBitmap(bitmap1, 88, 169, null); matrix.setRotate(digree2--,160 , 240); canvas.setMatrix(matrix); canvas.drawBitmap(bitmap2, 35, 115, null); invalidate(); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } }
2D绘图就到这里了,这里只是一些比较的画图,如果想要实现更加复杂的绘图,就需要进一步学习OpenGL ES技术了。
相关文章推荐
- android笔记之popwindows
- JNI技术及Android串口通信
- ubuntu13.04 Android4.0.3编译环境搭建与编译过程+later_add跟踪报告
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Android四大基本组件介绍与生命周期
- android涂鸦绘图功能部分实现
- Android编程心得---ViewPager+Fragment篇(一)初始化ViewPager的一些问题
- Android设计模式学习日记04--单例模式
- Android笔记之图文混排布局
- dalvikvm类找不到错误解决方案
- android中创建项目各选项的意思
- Android中ViewFlipper详解
- Android开发精要 重读 + xmind笔记(2)
- android学习日记19--四大组件之Services(服务)
- androidactivity去除标题栏和状态栏
- Android开发精要 重读 + xmind笔记(1)
- Android设计模式学习日记03--观察者模式
- Android中View绘制流程
- Android事件传递机制
- 两分钟彻底让你明白Android中onInterceptTouchEvent与onTouchEvent(图文)!