標籤:android style blog http java color
這個執行個體是自定的view的初步介紹,要設計的是一個隨著手指運動的小球。原理是隨時擷取手指的座標,然後在這個座標上面即時改變自訂view的座標。這個view僅僅是畫了一個圓形而已。
自訂的view
DrawView.java
package com.kale.drawview;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;public class DrawView extends View{ public float currentX = 60; public float currentY = 60; //定義,建立畫筆 Paint paint = 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); //設定畫筆顏色 paint.setColor(Color.RED); //繪製一個小圓 canvas.drawCircle(currentX, currentY, 50, paint); } // 為該組件的觸碰時間2重寫處理的方法 @Override public boolean onTouchEvent(MotionEvent event) { // 修改座標 currentX = event.getX(); currentY = event.getY(); // 通知群組件,重新繪製自己 invalidate(); // 返回true表明該方法已經處理該事件 return true; } }
布局檔案
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root_relativeLayout_id" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" > <com.kale.drawview.DrawView android:layout_width="match_parent" android:layout_height="match_parent"/></RelativeLayout>
當然,我們也可以不用布局檔案,直接在代碼中把自訂控制項放入layout中
package com.kale.drawview;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.RelativeLayout;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* RelativeLayout root = (RelativeLayout)findViewById(R.id.root_relativeLayout_id); final DrawView drawView = new DrawView(this); //設置組件的最大寬度 drawView.setMinimumHeight(300); drawView.setMinimumWidth(500); root.addView(drawView);*/ }}