Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完可以通过继承View来派生自定义组件。
下面以一个实例来说明如何开发自定义的UI组件:
实例:跟随手指的小球——开发自定义的UI组件,这个组件将会在指定位置绘制一个小球,这个位置可以动态改变。当用户通过手指在屏幕上拖动时,程序监听到这个手指事件,并把手指动作的位置传入自定义UI组件,并通知该组件重绘。
12345678910111213141516171819202122232425262728293031323334353637 | <span style= "font-size:14px;" > public class DrawView extends View {
private float currentX= 40 ;
private float currentY= 50 ;
//定义并创建画笔
Paint p= new Paint();
public DrawView(Context context)
{
super (context);
}
public DrawView(Context context,AttributeSet set)
{
super (context,set);
}
@Override
protected void onDraw(Canvas canvas)
{
//设置画笔的颜色
p.setColor(Color.RED);
//绘制圆
canvas.drawCircle(currentX,currentY, 15 ,p);
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
//获得(更新)位置坐标
this .currentX=event.getX();
this .currentY=event.getY();
//通知当前组件重绘
this .invalidate();
return true ;
} } </span> |
123456789101112131415161718192021 | <span style= "font-size:14px;" > public class MainActivity extends Activity {
private LinearLayout layout= null ;
private DrawView draw= null ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super .onCreate(savedInstanceState);
super .setContentView(R.layout.activity_main);
//获取LinearLayout容器
this .layout=(LinearLayout) super .findViewById(R.id.layout);
//创建DrawView组件
this .draw= new DrawView( this );
//设置组件相关属性
draw.setMinimumWidth( 300 );
draw.setMinimumHeight( 500 );
this .layout.addView(draw);
} } </span> |
12345678910111213 | <span style= "font-size:14px;color:#000000;" ><LinearLayout
xmlns:android= "//schemas.android.com/apk/res/android"
android:id= "@+id/layout"
android:layout_width= "match_parent"
android:layout_height= "match_parent"
tools:context= ".MainActivity" >
<<strong>nku.jerry.demo.DrawView </strong>
android:layout_width= "match_parent"
android:layout_height= "match_parent" />
</LinearLayout> </span> |
此时,Activity程序中只需如下代码即可:
1234567891011 | <span style= "font-size:14px;" > public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super .onCreate(savedInstanceState);
super .setContentView(R.layout.activity_main);
}
}</span> |
本文标题:Android学习技巧之自定义UI组件,责任编辑:宏鹏,来源:武汉北大青鸟鲁广校区栏目,于06-02发布于北大青鸟鲁广校区。Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完可以通过继承View来派生自定义组件
预约将免费领取7天课程体验卡
只为您方便就学
专业老师24小时1对1学习指导
定制专属于你的专属学习方案
微信号:17740513250
微信号:17740513250