Android 自訂View,android自訂view

來源:互聯網
上載者:User

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);
}

}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.