Android-canvas

Android-canvas

浮生未歇 发布于 2017-04-23 字数 525 浏览 932 回复 2

自定义了个view,在里面用到绘图,如下:
BitmapDrawable bDrawable=(BitmapDrawable) getResources().getDrawable(R.drawable.tree);
pic=bDrawable.getBitmap();
canvas.drawBitmap(pic,30,30,null);
然后我想在activity里面使用
Animation rotate=AnimationUtils.loadAnimation(TweenActivity.this,R.anim.scale);
imageView.startAnimation(rotate);
对图片放大缩小,
但是这要使用ImageView做载体,
但是activity是用的自定义的view,请问该如何实现图片放大缩小的功能,
谢谢啦,

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泛泛之交 2017-10-14 2 楼

自定义的 view 会成为一个统一的控件,如果这个 view 中只有你绘制的那个图片的话,
完全可以在 Activity 里面直接对 view 对象进行 view.startAnimation 操作

如果不想将整个 view 都进行动画处理,而又需要对该图像进行某个事件后的动画操作
还是推荐lz将图像放到 ImageView 中,然后对 Activity 使用相对布局,原先放置 View 的地方用一个 LinearLayout 代替,ImageView 放到你需要图像出现的位置。
在 onCreate 的时候实例化一个 linearLayout,将自定义的 view 加载进去。ImageView 就像上面的代码一样,在需要的时候直接 startAnimation 即可。

还有第三种方案,如果lz不嫌麻烦的话,只用一个 view,获取触发动画的事件或者用户的点击事件(这个需要监听 onKeyDown 或者 onTouch 然后计算区域等等复杂的操作)后,在内存中主动的修改图像大小,然后通过 onDraw 重绘出来。

祝好,
斑驳敬上

甜柠檬 2017-09-28 1 楼

logoAnim = new AnimationSet(true);
ScaleAnimation scale_big = new ScaleAnimation(1.0f, 0.8f, 1.0f, 0.8f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scale_big.setDuration(1500);

ScaleAnimation scale_small = new ScaleAnimation(0.8f, 1.0f, 0.8f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scale_small.setStartOffset(1500);
scale_small.setDuration(1500);

logoAnim.addAnimation(scale_big);
logoAnim.addAnimation(scale_small);

是这个意思嘛?