`

Android实现自定义view-绘制图片

阅读更多
主要原理是:extends view重载onDrow(),需要一bitmap,重载view,在 canvas上画临时bmp,当按下确定的时候按下 

   画到real_bmp上,其他的跟前面的基本上没有什么区别。

 

   
import com.example.test.R;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.provider.ContactsContract.CommonDataKinds.Event;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

public class bmpeffect extends Activity{
	 /*
	   * 需要一bitmap,重载view,在 canvas上画临时bmp,当按下确定的时候按下
	   * 画到real_bmp上,其他的跟前面的基本上没有什么区别
	   */
	private static Bitmap src;
	private static Bitmap heart;
	private static Bitmap star;
	private static Bitmap star2;
	private static int choose;
	private int height;
	private int width;
	public static float bmp_x;
    public static  float bmp_y;
	private Canvas my_canvas;
	public void onCreate(Bundle save){
		Log.e("on create", "hello");
	  super.onCreate(save);
	  src=data.src_bmp;
	  if(data.src_bmp==null)
		  Log.e("bmp", "null");
	  my_canvas=new Canvas(data.src_bmp);
	  height=data.src_bmp.getHeight();
	  width=data.src_bmp.getWidth();
	 heart=data.getbmp(getResources(), R.drawable.small_heart);
	 star=data.getbmp(getResources(), R.drawable.small_star);
	 star2=data.getbmp(getResources(), R.drawable.star8);
	  choose=0;
	  setContentView(R.layout.bmptest);
  }
  public void on_star2(final View v){
	  //star8;
	  choose=3;
	  
  }
  public void on_star(final View v){
	  choose=2;
  }
  public void on_heart(final View v){
	  choose=1;
  }
  public void on_ok(final View v){
	 drow_bmp(my_canvas);
  }
  public static void drow_bmp(Canvas canvas){
	  switch(choose){
	  case 1:
		  canvas.drawBitmap(heart, bmp_x, bmp_y, null);
		  break;
	  case 2:
		  canvas.drawBitmap(star, bmp_x,bmp_y, null);
		  break;
	  case 3:
		  //canvas.drawBitmap(star2, matrix, paint)
		  canvas.drawBitmap(star2, bmp_x, bmp_y, null);
	  }
  }
  public static class bmpview extends View{

	public bmpview(Context context,AttributeSet attrs) {
		super(context,attrs);
		// TODO Auto-generated constructor stub
	}
	 protected void onDraw(Canvas canvas){
		 canvas.drawColor(0xff000000);
		 Log.i("canvas", "drow");
		 if(src!=null){
			 canvas.drawBitmap(src, 0, 0, null);
		 }
		 drow_bmp(canvas);
	 }
	 public boolean onTouchEvent(MotionEvent event){
		 int action=event.getAction();
		 //现在应该可以不用区分不同的手势事件了,只需要得到
		 bmp_x=event.getX();
		 bmp_y=event.getY();
		 invalidate();
		 return true;
	 }
  }
 
}
效果如下
演示效果图片0

 

分享到:
评论

相关推荐

    Android自定义View-圆环布局

    "Android自定义View-圆环布局"是一个专为实现特定视觉效果和交互设计的项目,它包含了圆圈旋转、圆环拖动以及图标拖动和图片缩放等多种功能。 首先,我们来深入理解圆环布局。圆环布局是一种非标准的布局方式,它将...

    Android-自定义View绘制一个太极旋转图片demo

    本示例“Android-自定义View绘制一个太极旋转图片demo”聚焦于如何通过自定义View来绘制并动画化一个太极图案。下面将详细介绍这个过程中的关键知识点。 1. **自定义View的基础**: 自定义View通常继承自`View`或`...

    Android自定义View实现转盘旋转的效果

    本例中,我们使用自定义 View 实现了一个转盘旋转的效果,使用 Matrix 类来实现转盘的旋转,使用 Bitmap 类来加载图片,并使用 Canvas 类来绘制图片。 知识点: 1. Android 的自定义 View 技术 2. 继承 View 类和...

    Android自定义View基本绘制流程及实例

    本篇文章将深入探讨Android自定义View的基本绘制流程,并通过实例进行详解。 首先,了解自定义View的生命周期至关重要。一个自定义View的生命周期主要包括构造函数、测量(Measure)、布局(Layout)和绘制(Draw)四个...

    android自定义view-打造圆形ImageView(四)终结篇

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求定制UI组件,以实现独特的视觉效果。本篇文章将深入探讨如何打造一个圆形ImageView,这是Android开发中常见的需求,尤其是在设计用户头像...

    自定义控件--涂鸦View

    "自定义控件--涂鸦View"这个主题聚焦于如何在Android中创建一个允许用户自由绘画的自定义视图,即实现一个可以涂鸦的功能。这篇博客(原文链接:http://blog.csdn.net/u010593680/article/details/38539913)深入...

    Android自定义控件--2(数字签名)

    1. **创建一个新的Java类**:这个类需要继承自Android的View或ViewGroup类,以便我们可以重写其中的方法来实现自己的功能。在这个例子中,我们看到有一个名为PaintView的Java文件,它很可能是我们的自定义控件类。 ...

    android项目下对图片高斯模糊毛玻璃自定义view

    本项目旨在教你如何在Android项目中创建一个自定义View,用于实现高斯模糊和毛玻璃效果,并且允许开发者自定义模糊程度。以下是关于这个主题的详细讲解。 一、高斯模糊原理 高斯模糊是一种图像处理技术,通过对图像...

    Android自定义View实例:深度剖析 水晶/水滴 波浪球 实现步骤详解

    文件名“FastWidget4Android_HCZ”可能是一个项目或库的名称,暗示了这个实现可能包含了一些高效或者快速绘制的组件,可能包含对自定义View性能的优化策略。在实际开发中,了解并应用这些优化技巧,可以使你的自定义...

    【原创】Android自定义View实现图片显示并能缩放、拖拽、切换

    在Android开发中,自定义View是...理解并掌握自定义View的原理和实现方法,是成为一名出色的Android开发者不可或缺的一部分。通过不断实践和学习,你将能够创建出更加复杂、功能强大的自定义组件,提升应用的用户体验。

    Android-老外的自定义View面试题实现篇

    7. **SimpleCoverflow**:这个例子可能是一个实现类似Cover Flow效果的自定义View,Cover Flow是一种展示图片或内容的旋转轮播效果,常用于应用的主界面或图片浏览。实现这个效果可能涉及到视角变换、滑动监听和动画...

    android surfaceview自定义拍照 绘制头像轮廓

    这个项目"android surfaceview自定义拍照 绘制头像轮廓"是基于网上现有的示例代码进行了修改,用于实现一个自定义的拍照功能,并且在拍摄的照片上能够绘制出人像的轮廓。下面我们将深入探讨`SurfaceView`以及如何...

    安卓进度条loadingprogress相关-android自定义view自定义进度条图片合成图片绘制等功能很实用的自定义控件.rar

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且具有交互性的用户界面元素。本资源包含了一系列与自定义进度条、图片合成和图片绘制相关的实践案例,这些功能对于构建吸引人的...

    Android基于Canvas,自定义View实现的简单画图工具

    本项目“Android基于Canvas,自定义View实现的简单画图工具”就是利用这些技术创建了一个简易的绘图应用,用户可以在此画布上进行绘画操作,如绘制直线、矩形、圆形以及自由手绘,并且具备橡皮擦功能,可以擦除已有...

    自定义控件--文字与图片组合

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。...通过学习这个案例,开发者可以深入了解Android自定义控件的原理,提高UI设计和实现的技能,从而在项目中创建出更具特色的用户界面。

    自定义滑动按钮为例图文剖析Android自定义View绘制

    本文将以自定义滑动按钮为例,深入解析Android自定义View的绘制过程。 首先,了解View和ViewGroup的关系至关重要。View是所有UI元素的基础类,它负责绘制和事件处理。而ViewGroup则作为容器,用于管理并布局多个...

    android自定义veiw——波浪线

    本文将围绕“android自定义view——波浪线”这一主题,深入探讨如何实现这样的自定义组件。 首先,我们了解自定义View的基本步骤。创建一个自定义View通常需要继承自Android的View或其子类,如ViewGroup。在这个...

    android自定义的边缘凹凸的View

    总结来说,实现一个边缘凹凸的自定义View涉及到Android图形绘制的基本原理和技巧,通过理解并实践这些步骤,开发者不仅可以创建出独特的界面元素,还能提升对Android系统底层机制的理解。在实际开发中,结合博客文章...

    Android 自定义View(五)实现跑马灯垂直滚动效果

    总结起来,实现Android自定义View的跑马灯垂直滚动效果,需要掌握View的绘制原理、动画机制以及必要的优化技巧。通过自定义View,开发者可以创造出各种各样的个性化UI,增强应用的用户体验。在实践中不断学习和探索...

    Android自定义View之绘制圆形头像功能

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求定制UI组件。本文主要探讨了如何自定义一个可以绘制圆形头像的View,即`RoundImageView`。这个自定义View继承自标准的`ImageView`,目的是将...

Global site tag (gtag.js) - Google Analytics