自定义的View,实现一个跟随手指的小球
2012-05-05 22:04
489 查看
/* * 开发自定义的View,实现一个跟随手指的小球。当用户通过手指在屏幕上拖动时,程序就监听到这个动作,并把手指动作的位置传入自定义的UI组件中,并通知该组件重绘该图。 */ import 略 public class Ex02_2Activity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 创建DrawView组件 final DrawView draw = new DrawView(this); // 获取布局文件 LinearLayout root = (LinearLayout) findViewById(R.id.linearlayout); // 设置自定义组件的最大宽度和高度 draw.setMinimumHeight(500); draw.setMinimumWidth(300); // 为draw组件绑定Touch事件 draw.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub // 修改组件中的currentX和currentY的值 draw.currentX = event.getX(); draw.currentY = event.getY(); // 通知draw组件重绘 draw.invalidate(); // 返回true表明处理方法已经处理了该事件 return true; } }); // 向布局文件中加入自定义的组件 root.addView(draw); } } // 自定义一个View类,继承View class DrawView extends View { public float currentX = 40; public float currentY = 50; public DrawView(Context context) {// 构造函数 super(context); } // 重写View中的onDraw方法 public void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); // 设置画笔颜色 p.setColor(Color.RED); // 绘制一个小圆 canvas.drawCircle(currentX, currentY, 15, p); } }
/****************** XML文件代码*************************/
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearlayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
/********************************* 源程序完 ***************************/
下面看下这个程序的截图:
总结:程序中最重要的地方是重写了View中的onDraw()方法。
再利用了 canvas.drawCircle(float cx, float cy, float radius, Paint paint)方法绘制了一个圆。
android API对这个方法的参数是这样解释的:
// Draw the specified circle using the specified paint.
// If radius is <= 0, then nothing will be drawn. The circle will be filled or
// framed based on the Style in the paint.
// Parameters
// cx The x-coordinate of the center of the cirle to be drawn
// cy The y-coordinate of the center of the cirle to be drawn
// radius The radius of the cirle to be drawn
// paint The paint used to draw the circle
其实看API中我们还可学到很多方法。。。
程序中的draw.invalidate()也是必须的,它的功能是通知draw组件重图案。
相关文章推荐
- 自定义View实现跟随手指的小球
- 自定义圆形View:实现跟随手指移动的小球
- Android开发——自定义View之实现跟随手指移动的小球
- Android自定义圆形View实现小球跟随手指移动效果
- 自定义view 实现跟随手指移动的小球
- 【Android应用实例之三】跟随手指的小球——自定义SurfaceView应用
- 自定义view实现随手指移动的小球及画轨迹
- Android自定义View之跟随手指一起滑动的五色的小球
- Android-通过自定义View组件实现跟随手指移动的ImageView组件
- android从零开始-开发自定义View-跟随手指移动的小球
- 自定义组件,通过回调实现跟随手指的小球
- 在一个Activity页面中View跟随手指移动,并且能实现点击效果
- Android 实例:通过自定义View组件实现跟随手指移动的小兔子
- 【Android应用实例之二】跟随手指的小球——自定义View应用
- android自定义组件-跟随手指的小球
- Android自定义View圆形和拖动圆、跟随手指拖动效果
- 自定义View重写onTouchCount,实现圆形随手指移动
- 自定义view视图,小球随手指动
- 使用XIB自定义一个UIView,然后将这个view添加到controller的view 上(相当于所有界面都通过xib来实现)
- 分享一个实现图片圆角,圆的自定义的ImageView,尽可能少的减少内存消耗。