欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程自定義組件實(shí)例詳解

 更新時(shí)間:2017年06月26日 10:40:43   作者:聽著music睡  
這篇文章主要介紹了Android自定義組件,結(jié)合實(shí)例形式分析了Android自定義組件的原理、實(shí)現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Android編程自定義組件。分享給大家供大家參考,具體如下:

在Android中,所有的UI界面都是由View類和ViewGroup類及其子類組合而成。其中,View類是所有UI組件的基類,而ViewGroup類是容納這些UI組件的容器。

其本身也是View類的子類。

在實(shí)際開發(fā)中,View類還不足以滿足程序所有的需求。這時(shí),便可以通過繼承View類來開發(fā)自己的組件。

開發(fā)自定義組件的步驟:

1、創(chuàng)建一個(gè)繼承android.view.View類的View類,并且重寫構(gòu)造方法。
2、根據(jù)需要重寫相應(yīng)的方法。
3、創(chuàng)建并實(shí)例化自定義View類,并將其添加到布局管理器中。

現(xiàn)在來學(xué)習(xí)使用自定義類

1、首先創(chuàng)建一個(gè)java文件來繪制圖片

package myview;
import com.example.allcode.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class MyView extends View{
  public float bitmipx;
  public float bitmipy;
  public MyView(Context context) {
    super(context);
    bitmipx=550;
    bitmipy=550;
    // TODO Auto-generated constructor stub
  }
  @Override
  protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
    //創(chuàng)建并實(shí)例化Paint對象
    Paint paint = new Paint();
    //根據(jù)圖片生成位圖對象
    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.image_equip_baibao_baicaodan);
    canvas.drawBitmap(bitmap, bitmipx,bitmipy, paint); //繪制圖片
    if(bitmap.isRecycled()) //判斷圖片是否可以回收
    {
      bitmap.recycle(); //強(qiáng)制回收圖片
    }
  }
}

2、在主activity中實(shí)例化圖片,并添加觸摸事件

package myview;
import com.example.allcode.R;
import android.app.Activity;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;
public class ShowMyView extends Activity{
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.showmyview);
    FrameLayout framelayout = (FrameLayout) findViewById(R.id.showview);
    final MyView myview = new MyView(ShowMyView.this); //創(chuàng)建并示例化MyView類
    //添加觸摸事件
    myview.setOnTouchListener(new OnTouchListener() {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        myview.bitmipx=event.getX();
        myview.bitmipy=event.getY();
        myview.invalidate();//重繪自定義組件
        return true;
      }
    });
    framelayout.addView(myview);
  }
}

對應(yīng)的布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/showview" //不要忘記這一行
   >
</FrameLayout>

效果圖如下:

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進(jìn)階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評論