我没有太多的运气包围我的头,所以我希望有人可以帮助我.
我使用svg-android从SVG获得了一个drawable,但是drawable没有缩放到视图.我能够找到的所有内容都说我应该直接绘制到画布并重新缩放画布,但是当我尝试它时,它似乎只是改变边界而不是缩放图像.
这是我到目前为止所尝试的:
ImageView testview = (ImageView)findViewById(R.id.testview);
//Get SVG and convert to drawable
SVG vector = SVGParser.getSVGFromResource(getResources(),R.drawable.testvector);
Drawable test = vector.createPictureDrawable();
testview.setBackground(test); //displays fine, but won't scale to the dimensions of
//the View
//function that clips the image but doesn't scale:
Drawable testTwo = new CustomPictureDrawable(vector.getPicture(),
(float)0.5, (float)0.5);
testView.setBackground(testTwo);
class CustomPictureDrawable extends PictureDrawable {
private float scalex, scaley;
public CustomPictureDrawable(Picture picture, float scalex, float scaley) {
super(picture);
this.scalex = scalex;
this.scaley = scaley;
}
@Override
public void draw(Canvas canvas) { …Run Code Online (Sandbox Code Playgroud) 我正在进行流体布局项目.我的文档中有一些固定高度的DIV,所有这些都有不同的高度.我需要在浏览器调整大小时按比例更改这些DIV的高度.这是标记.
<body>
<div id="a" class="target"></div>
<div id="b" class="target"></div>
<div id="c" class="target"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
和css:
<style>
body { width: 90%; margin: 0 auto;}
.target { width:30%; float:left; margin:1.6%; cursor:pointer; }
#a { height: 200px; background-color: yellow;}
#b { height: 400px; background-color: green;}
#c { height: 600px; background-color: grey;}
</style>
Run Code Online (Sandbox Code Playgroud)
听起来很简单!主要条件是我不知道预定量的目标DIV及其ID,这就是我使用.each(function())的原因.这是我写的脚本:
$(document).ready(function(){
//set the initial body width
var originalWidth = 1000;
/*I need to go through all target divs because i don't know
how many divs are here and what are …Run Code Online (Sandbox Code Playgroud) 我在扩展表面视图和实现runnable的类中有这个代码我能够使用该类基本上允许您使用不同的颜色等绘制到画布.我正在尝试获得一种方法,允许我在绘制图像后保存图像,这是方法.无论我做什么,我只是得到一个没有任何内容的黑色图像.有任何想法吗?
我启用了缓存绘图
目标从自定义SurfaceView获取位图图像我已经用尽了在这里查看其他帖子的选项,但没有找到任何可行的工作.这里希望最近有一个新的解决方案.非常感谢
public Bitmap getImage() {
Bitmap bitmap = Bitmap.createBitmap(this.getWidth(),
this.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
this.draw(canvas);
return bitmap;
}
Run Code Online (Sandbox Code Playgroud) 有没有人对以下问题有提示或解释?我画了一个带有位图的路径.当画布没有缩放时,它看起来不错(第一张图片).当我缩放(放大)时,位图处理器不会被缩放并且看起来非常难看.我在放大后尝试了几个重新创建bitmapshader的东西,但没有成功:-(.有人有提示吗?
没有缩放它看起来不错:

缩放它看起来很难看:

代码:
canvas.scale(scalex, scaley);
canvas.translate(itranslatex, itranslatey);
fillBMP = makePatternCross(fscalex, 1, Color.GREEN/*,fscalex,fscaley*/);
fillBMPshader = new BitmapShader(fillBMP, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT);
paintshader = new Paint();
paintshader.setShader(fillBMPshader);
canvas.drawPath(cpath.path, paintshader);
private static Bitmap makePatternCross(float fSize, float fStrokewith,int iColor) {
Log.v("Create Patter makePatternCross","makePatternCross");
float fBitmapSizeOrig = 10;
fBitmapSizeOrig=fBitmapSizeOrig*fSize;
Bitmap bm = Bitmap.createBitmap((int)fBitmapSizeOrig,(int) fBitmapSizeOrig,Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bm);
//c.scale(200, 200);
c.drawColor(Color.WHITE);
Paint p = new Paint();
p.setColor(iColor);
//p.setStrokeWidth(iStrokewith);
p.setStrokeWidth(fStrokewith/fSize);
p.setStrokeWidth((float) 0.000001);
c.drawLine(0, 0, fBitmapSizeOrig, fBitmapSizeOrig, p);
c.drawLine(0, fBitmapSizeOrig, fBitmapSizeOrig, 0, p);
if (fSize != 1) …Run Code Online (Sandbox Code Playgroud) 我是Android世界的新手,我有一个非常讨厌的问题.在我的程序中,我使用Android Canvas.我想添加一个EditText元素,或类似的东西,以获取用户文本输入.你能帮我找到解决这个问题的方法吗?
谢谢你的回答.
是否可以让用户只触摸屏幕一次?
含义:用户触摸屏幕,如果他再次尝试触摸屏幕,则不会发生任何事情.我正在实现使用canvas在屏幕上绘制对象的方法.
先感谢您!
我正在使用定制版的FingerPaint for Android以及其他一些功能,例如插入图像和移动它们.我决定实施一个Undo&Redo,因为它会让生活变得更轻松.为了实现它,我最终决定使用一个Stack来推送视图的绘图缓存,并且每当我想要回到之前的状态时,我就从那里推送内容.因此,使用FingerPaint作为基础,我有以下内容:
private void touch_up() {
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// I enable the set drawing cache...
myView.setDrawingCacheEnabled(true);
// ... and I add the cache to the stack
undoStack.add(myView.getDrawingCache());
indexOfUndoRedo++;
// kill this so we don't double draw
mPath.reset();
}
Run Code Online (Sandbox Code Playgroud)
目前只有在修改后才会更新堆栈,因为我仍然在弄清楚如何解决这个问题.当我想申请重做时,我会执行以下操作:
private void undo() {
myView = new MyView(getActivity());
myView.setBackgroundDrawable(new BitmapDrawable(undoStack.get(indexOfUndoRedo)));
indexOfUndoRedo--;
myView.invalidate();
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,应用程序显示屏幕的原始状态没有变化.我也尝试用白色背景绘制它以重置它,但这种方法也无效.
关于如何解决这个问题的任何想法或建议?我会非常感激:)
问候
我知道这似乎不是建设性的或偏离主题的问题.但是我在谷歌搜索超过40或50次以找到关于相机和矩阵的好文档或教程之后我问这个问题.
我有做3D动画在Android中Canvas,Camera,Matrix和无Open GL.
最后我找到了一些例子,但是他们对方法和它们之间的差异有一些描述.(三星Galaxy S2上的Touch Controlled Cube或制作你自己的3D列表).现在没有文件,每件事看起来都像魔术一样我不能调试我的项目.
所以,我在这里问我的问题:
你知道如何使用一个很好的教程或文档Canvas,Camera,Matrix为3D动画?
我想在 android 上的画布中连续旋转圆圈。我正在使用画布绘制圆圈并且我正在连续旋转圆圈。这是可能的,如果可能的话,如何使用代码或示例来帮助我,非常感谢!
这是我在画布上绘制圆圈的代码:
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
public class AnimationActivity extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
public class SampleView extends View
{
public SampleView(Context context)
{
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas)
{
Paint mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(10);
mPaint.setColor(Color.RED);
canvas.drawCircle(75, 75, 75, mPaint);
}
} …Run Code Online (Sandbox Code Playgroud)