Articles of graphics

Android绘制一条animation线

我目前正在使用graphics和path,我可以成功地显示任何我想要的。 但不是直接在我的SurfaceView上绘制一条线,我想在animation中逐渐绘制它。 到目前为止,我所做的是创build一个path,然后使用PathMeasure沿path逐步检索坐标。 这基本上是我迄今为止所做的 PathMeasure pm = new PathMeasure(myPath, false); float position = 0; float end = pm.getLength(); float[] coord = {0,0,0,0,0,0,0,0,0}; while (position < end){ Matrix m = new Matrix(); // put the current path position coordinates into the matrix pm.getMatrix(position, m, PathMeasure.POSITION_MATRIX_FLAG | PathMeasure.TANGENT_MATRIX_FLAG); // put the matrix data into the coord array […]

在android imageview中旋转变焦拖动图像

我想能够在android framelayout和imageview中旋转,缩放和移动图像。 用下面的代码,我能够做到这一点。 但是这个观点有时会从UI中走出来。 正如你可以c我处理ACTION_UP(每个ACTION_UP 90度旋转)motionevent旋转。 以下是我的main.xml: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/csf6a4_flipped" android:scaleType="matrix" > </ImageView> </FrameLayout> 以下是我的java文件: package com.example.rotatezoommove; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.PointF; import android.os.Bundle; import android.util.FloatMath; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; public class RotateZoomMove extends […]

获取包含位图支持的canvas的Android视图上的点的像素颜色值

我试图找出最佳的方式来获取视图上给定点的像素颜色值。 有三种方法可以写入视图: 我用View.setBackgroundDrawable(…)设置了一个背景图像。 我用Canvas.drawText(…) , Canvas.drawLine(…)等写入文本,画线等,到一个位图支持的canvas 。 我通过写入传递给View的onDraw(Canvas canvas)方法的Canvas来绘制子对象(精灵)。 这是从我的类扩展视图的onDraw()方法: @Override public void onDraw(Canvas canvas) { // 1. Redraw the background image. super.onDraw(canvas); // 2. Redraw any text, lines, etc. canvas.drawBitmap(bitmap, 0, 0, null); // 3. Redraw the sprites. for (Sprite sprite : sprites) { sprite.onDraw(canvas); } } 获得一个像素的颜色值的最好方法是什么,这将考虑所有这些来源?

Android中“屏幕大小”和“屏幕密度”的区别?

我有几个问题: 什么是屏幕尺寸 ? 屏幕密度是多less? 屏幕尺寸和屏幕密度有什么区别 ? 我如何在Android中支持不同的密度和不同的屏幕尺寸? 我已经阅读了官方文档 ,但我无法理解屏幕尺寸和屏幕密度之间的差异。

Androidcanvas画线 – 使线条变粗

这似乎应该有点微不足道,但是在我的Android应用程序中,我使用canvas绘制一系列连接在一起的线。 出于某种原因,我的线条非常非常微弱。 我想知道如何让我的线条更厚? 这是我的代码 for(int i=1; i<myArrayListOfValues.size(); i++){ Paint myPaint = new Paint(Paint.ANTI_ALIAS_FLAG); myPaint.setStrokeWidth(8/*1 /getResources().getDisplayMetrics().density*/); myPaint.setColor(0xffff0000); //color.RED canvas.drawLine(myArrayListOfValues.get(i), myArrayListOfValues.get(i), myArrayListOfValues.get(i-1), myArrayListOfValues.get(i-1), myPaint); } 另一件事是..我画的线和圈子总是黑色.. setColor()似乎从来没有任何效果。 我试过使用颜色名称(如color.red),甚至他们的hex值(例如0xffff0000)

Android的 – 如何绘制一个基于弧的渐变

我正在尝试创build一个逐渐从一种颜色到另一种颜色的弧度(可变度数)。 从蓝色到红色的例子: 这是我的代码: SweepGradient shader = new SweepGradient(center.x, center.y, resources.getColor(R.color.startColor),resources.getColor(R.color.endColor)); Paint paint = new Paint() paint.setStrokeWidth(1); paint.setStrokeCap(Paint.Cap.FILL); paint.setStyle(Paint.Style.FILL); paint.setShader(shader); canvas.drawArc(rectF, startAngle, sweepAngle, true, paint); 但结果是整个弧线被涂上了相同的颜色。 编辑: 经过更多的实验后,我发现颜色的扩散是由弧的angular度决定的。 如果我绘制一个小angular度的弧线,只显示第一个颜色。 angular度越大,绘制的颜色越多。 如果angular度很小,似乎没有梯度。 这是一个例子。 我正在绘制4弧 – 90,180,270和360: RectF rect1 = new RectF(50, 50, 150, 150); Paint paint1 = new Paint(); paint1.setStrokeWidth(1); paint1.setStrokeCap(Paint.Cap.SQUARE); paint1.setStyle(Paint.Style.FILL); SweepGradient gradient1 = new SweepGradient(100, […]

View.onDraw() – 它什么时候被调用?

我把一个Log.d()调用放到我的扩展视图的onDraw()中,这样我就可以看到它被调用的频率和时间。 它被称为视图的实例化,这并不奇怪。 但是,我注意到,即使我的代码没有做任何与graphics相关的任何事情,它也会在onTouchEvent()处理的每一个tap上调用。 然而,在视图的文档中,我似乎无法find什么时候实际调用onDraw()。 我并不是真的担心我的特定项目(这对我来说不会造成什么问题),我只想知道某个列表是否存在某个列表,或者显示某个View的操作顺序,尤其是什么原因onDraw()被调用。

抖动渐变可绘制吗?

我使用以下drawable: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="@color/content_background_gradient_start" android:endColor="@color/content_background_gradient_end" android:angle="270" /> </shape> 问题是我在hdpi设备(如Nexus One和Droid)上出现严重的条带,因为渐变从屏幕顶部到底部。 根据http://idunnolol.com/android/drawables.html#shape_gradient没有一个渐变的“抖动”属性。 我能做些什么来平滑渐变? 注意:将dither =“true”添加到形状似乎不起作用。

如何在android上创build烟花粒子graphics效果

任何人有任何想法如何通过在canvas上绘制烟花效果? 在wireworksdynamic壁纸(免费应用程序)中有一个很好的例子。 在那里,许多点移动,并留下一个像爆炸一样的明星,逐渐消失。 我觉得每个点都有一些运动模糊,我不知道如何创build。 任何想法或相关例子的链接是受欢迎的。

在Android中旋转drawable

在Drawable如何从资源加载Drawable ? 例如,我想绘制一个箭头,并且能够在绘制时将它旋转到不同的方向?