捏放大或缩小图像视图动态添加到布局

马扬克

在用户从设备的库中选择图像之后,我在一个动态创建ImageView并将其添加到布局的应用程序上工作

使用我编写的代码,可以移动和旋转ImageView。但是,我也想为ImageView实现放大/缩小。

代码中存在的错误是在将ImageView添加到布局后,将ImageView移到最右端时会缩小,以便我想要做的事,但这应该在紧要关头发生。

编辑:调试我的代码后,我发现我想通过增加宽度和高度来增加ImageView的大小。当我更改以下行时:final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 至:

final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                                    240,
                                    200);

我得到了我想要的。因此,我可以class DragImageView在紧急情况下执行此操作

这是自定义Imageview的代码。

public class DragImageView extends ImageView {

    private float mLastTouchX;
    private float mLastTouchY;

    private float mDeltaX;
    private float mDeltaY;
    private Bitmap bmpImg;
    Context mContext;

    public DragImageView(Context context, Bitmap bmpImg) {
        super(context);
        this.bmpImg = bmpImg;
        this.mContext = context;
        init();

    }

    public DragImageView(final Context context, final AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        // TODO Auto-generated method stub

        Bitmap resized = Bitmap.createScaledBitmap(bmpImg, 180, 200, true);
        Bitmap conv_bm = getRoundedShape(resized); //function to get the imageview as     rounded shape
        setImageBitmap(conv_bm);

        setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(final View v, MotionEvent event) {
                PopupMenu popup = new PopupMenu(mContext, v);
                // Inflating the Popup using xml file
                popup.getMenuInflater().inflate(R.menu.popup_menu,
                        popup.getMenu());

                popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {

                    @Override
                    public boolean onMenuItemClick(MenuItem item) {
                        // TODO Auto-generated method stub
                        int itemId = item.getItemId();
                        if (itemId == R.id.delete_DragImgView) {
                            ViewGroup parentView = (ViewGroup) v.getParent();
                            parentView.removeView(v);
                        } else if (itemId == R.id.rotate_DraagImgView) {
                            final RotateAnimation rotateAnim = new RotateAnimation(
                                    0.0f, 90, RotateAnimation.RELATIVE_TO_SELF,
                                    0.5f, RotateAnimation.RELATIVE_TO_SELF,
                                    0.5f);
                            rotateAnim.setDuration(0);
                            rotateAnim.setFillAfter(true);
                            v.startAnimation(rotateAnim);
                        }
                        return false;
                    }
                });

                final int action = event.getAction();

                mLastTouchX = event.getRawX();
                mLastTouchY = event.getRawY();

                switch (action) {
                case MotionEvent.ACTION_DOWN: {
                    RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) getLayoutParams();
                    mDeltaX = mLastTouchX - lParams.leftMargin;
                    mDeltaY = mLastTouchY - lParams.topMargin;
                    popup.show();
                    break;
                }
                case MotionEvent.ACTION_MOVE: {
                    mLastTouchX = event.getRawX();
                    mLastTouchY = event.getRawY();

                    final RelativeLayout.LayoutParams params = (LayoutParams) getLayoutParams();
                    params.leftMargin = (int) (mLastTouchX - mDeltaX);
                    params.topMargin = (int) (mLastTouchY - mDeltaY);
                    setLayoutParams(params);

                    break;
                }
                }
                invalidate();

                return true;
            }
        });
    }

从活动中如下添加imageview。

final DragImageView dynamicImgView = new DragImageView(
                            getApplicationContext(), yourSelectedImage);



                    final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
                            RelativeLayout.LayoutParams.WRAP_CONTENT,
                            RelativeLayout.LayoutParams.WRAP_CONTENT);
                    dynamicImgView.setLayoutParams(params);
                    relativeLayout.addView(dynamicImgView);

我知道可以进行缩放,但是在尝试了很多代码并获得stackover流的帮助后,终于想到了进行缩放的想法。请帮我。提前致谢。

马扬克

解决了我的问题..我只是增加了imageview的高度和宽度。

} else if (itemId == R.id.zoom_in) {
                            if (height > 100) {
                                height = height - ZoomCounter;
                                width = width - ZoomCounter;
                                final RelativeLayout.LayoutParams params = (LayoutParams) getLayoutParams();
                                getLayoutParams().height = height;
                                getLayoutParams().width = width;
                                setLayoutParams(params);
                                invalidate();
                            }

                        } else if (itemId == R.id.zoom_out) {
                            if (height < 600) {
                                height = height + ZoomCounter;
                                width = width + ZoomCounter;
                                final RelativeLayout.LayoutParams params = (LayoutParams) getLayoutParams();
                                getLayoutParams().height = height;
                                getLayoutParams().width = width;
                                setLayoutParams(params);

                                invalidate();
                            }
                        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

捏放大或缩小图像视图动态添加到布局

来自分类Dev

将放大/缩小添加到图像的ListView?

来自分类Dev

动态地将视图添加到布局

来自分类Dev

动态将滚动视图添加到线性布局

来自分类Dev

以编程方式将视图添加到布局(并放大)非常慢

来自分类Dev

以编程方式(和放大)将视图添加到布局非常慢

来自分类Dev

动态将本地存储的图像添加到列表视图

来自分类Dev

如何将图像视图和文本视图添加到线性布局

来自分类Dev

动态向RecyclerView的项目添加视图或放大布局

来自分类Dev

将视图添加到布局?

来自分类Dev

Android捏放大图像

来自分类Dev

Android捏放大图像

来自分类Dev

动态将子视图添加到单元格会导致布局约束错误输出

来自分类Dev

如何动态地将 LinearLayoutCompat 视图添加到现有的 xml 布局?

来自分类Dev

如何动态地将按钮添加到视图以便布局宽度正常工作?

来自分类Dev

将动态视图添加到RalativeLayout

来自分类Dev

将动态视图添加到UIScrollView

来自分类Dev

将图像添加到警报视图

来自分类Dev

将图像添加到列表视图

来自分类Dev

如何动态地在滚动视图中将自定义布局添加到线性布局

来自分类Dev

将布局视图从xml文件添加到内容视图

来自分类Dev

在Android中将标签和图像动态添加到自定义视图

来自分类Dev

将视图添加到半透明的线性布局

来自分类Dev

将子视图添加到UITextView并使用自动布局

来自分类Dev

在添加到UIWindow的视图上使用自动布局

来自分类Dev

将滚动视图添加到android布局

来自分类Dev

Android-将布局视图添加到ListView

来自分类Dev

添加到布局的视图继承父样式

来自分类Dev

将自定义视图(tileview)添加到布局?

Related 相关文章

热门标签

归档