Android 自訂View,android自訂view
在安卓開發的過程中,安卓官方內建的控制項有時候往往不能滿足我們的需求。這個時候我就需要自訂。下面我們就看看自訂View:
package com.example.myview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.util.AttributeSet;import android.view.View;import android.view.View.OnClickListener;public class MyView extends View implements OnClickListener{private int a=0;private Paint paint;public MyView(Context context) {super(context);// TODO Auto-generated constructor stub} public MyView(Context context, AttributeSet attrs) { super(context, attrs); }@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paint=new Paint();//定義一個畫筆paint.setColor(Color.RED);//給畫筆設定顏色paint.setStyle(Style.FILL);//設定畫筆填充canvas.drawCircle(100, 100, 100, paint);//畫個圓paint.setColor(Color.BLUE);//給畫面設定顏色paint.setTextSize(20);//設定字型大小canvas.drawText("小源"+a, 100, 100, paint);setOnClickListener(this);//給View加上監聽}@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stuba++;invalidate();//重新繪製}}
在XML中 我們要把我們自訂的控制項寫上如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" ><com.example.myview.MyView android:layout_width="wrap_content" android:layout_height="wrap_content"/></RelativeLayout>
這就完成了一個非常簡單的自訂View.程式路上一起努力,加油!
好了,一點點在進步!最終會成為大神的!
android 自訂View怎寫 ?
1.首先你寫的view要繼承view 在自訂View的類中覆蓋父類的構造(注意是2個參數的)
public class MyView2 extends View{
public MyView2(Context context,AttributeSet att)
{super(context,att);
}
public void onDraw(Canvas c)
{ // 這裡繪製你要的內容
}
}
2.定義布局檔案
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.lovose.MyView2 // 這裡引用你的view要完整的路徑名哦!
android:id="@+id/View01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
</com.lovose.MyView2>
<AbsoluteLayout android:id="@+id/AbsoluteLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:text="Button01" android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="100dip" android:layout_y="100dip"></Button>
</AbsoluteLayout>
</FrameLayout>
//完事後你就可以任意定義UI的顯示了...餘下全文>>
android自訂View怎隱藏
應該是你代碼寫的有問題。
package test;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class TestView extends LinearLayout implements OnClickListener
{
private Button button;
private TextView textView;
public TestView(Context context)
{
super(context);
setupUI(context);
}
public TestView(Context context, AttributeSet attrSet)
{
super(context, attrSet);
setupUI(context);
}
private void setupUI(Context context)
{
if (button != null || this.isInEditMode()) return;
button = new Button(context);
button.setText("test");
addView(button);
textView = new TextView(context);
textView.setText("textview");
addView(textView);
button.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
setVisibility(View.GONE);
}
}