public class
DrawView
extends
View {
public float
currentX
=
40
;
public float
currentY
=
50
;
//定义并创建画笔
Paint
p
=
new
Paint()
;
public
DrawView
(Context context)
{
super
(context)
;
}
public
DrawView
(Context context
,
AttributeSet set)
{
super
(context
,
set)
;
}
@Override
public void
onDraw
(Canvas canvas)
{
super
.onDraw(canvas)
;
//设置画笔的颜色
p
.setColor(Color.
RED
)
;
//绘制一个小圆(作为小球)
canvas.drawCircle(
currentX
,
currentY
,
15
,
p
)
;
}
//为该组件的触碰事件重写事件处理办法
@Override
public boolean
onTouchEvent
(MotionEvent event)
{
//修改currentX、currentY两个属性
currentX
= event.getX()
;
currentY
= event.getY()
;
//通知当前组件重绘自己
invalidate()
;
//返回true表明该处理方法已经处理改事件
return true;
}
}
public class
CustomViewActivity
extends
Activity {
@Override
public void
onCreate
(Bundle savedInstanceState)
{
super
.onCreate(savedInstanceState)
;
setContentView(R.layout.
main
)
;
//获取布局文件中得LineararLayout容器
LinearLayout root = (LinearLayout) findViewById(R.id.
root
)
;
//创建DrawView组件
final
DrawView draw =
new
DrawView(
this
)
;
//设置自定义组件的最小宽度、高度
draw.setMinimumWidth(
300
)
;
draw.setMinimumHeight(
500
)
;
root.addView(draw)
;
}
}
<?
xml version=
"1.0"
encoding=
"utf-8"
?>
package=
"com.example.zxy.ex2"
>
<uses-sdk
android
:minSdkVersion=
"10"
android
:targetSdkVersion=
"21"
/>
<application
android
:allowBackup=
"true"
android
:icon=
"@mipmap/ic_launcher"
android
:label=
"@string/app_name"
android
:roundIcon=
"@mipmap/ic_launcher_round"
android
:supportsRtl=
"true"
android
:
theme
=
"@style/AppTheme"
>
<activity
android
:name=
".CustomViewActivity"
android
:label=
"@string/app_name"
android
:
theme
=
"@style/AppTheme"
>
<intent-filter>
<action
android
:name=
"android.intent.action.MAIN"
/>
<category
android
:name=
"android.intent.category.LEANBACK_LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>