Android ImageView Zoom-in and Zoom-Out

前端 未结 23 1908
死守一世寂寞
死守一世寂寞 2020-11-22 09:31

I want to Zoom-in and Zoom-out an Android ImageView. I tried most of the samples but in all of them the image in the ImageView itself is getting Zoomed-in and Zoomed-out, wh

23条回答
  •  死守一世寂寞
    2020-11-22 10:20

    Method to call the About&support dialog

     public void setupAboutSupport() {
    
        try {
    
            // The About&Support AlertDialog is active
            activeAboutSupport=true;
    
            View messageView;
            int orientation=this.getResources().getConfiguration().orientation;
    
            // Inflate the about message contents
            messageView = getLayoutInflater().inflate(R.layout.about_support, null, false);
    
            ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.MyCustomTheme_AlertDialog1);
            AlertDialog.Builder builder = new AlertDialog.Builder(ctw);
            builder.setIcon(R.mipmap.ic_launcher);
            builder.setTitle(R.string.action_aboutSupport);
            builder.setView(messageView);
    
            TouchImageView imgDisplay = (TouchImageView) messageView.findViewById(R.id.action_infolinks_about_support);
            imgDisplay.setMaxZoom(3f);
    
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.myinfolinks_about_support);
    
            int imageWidth = bitmap.getWidth();
            int imageHeight = bitmap.getHeight();
            int newWidth;
    
            // Calculate the new About_Support image width
            if(orientation==Configuration.ORIENTATION_PORTRAIT ) {
                // For 7" up to 10" tablets
                //if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
                if (SingletonMyInfoLinks.isTablet) {
                        // newWidth = widthScreen - (two borders of about_support layout and 20% of width Screen)
                    newWidth = widthScreen - ((2 * toPixels(8)) + (int)(widthScreen*0.2));
                } else newWidth = widthScreen - ((2 * toPixels(8)) + (int)(widthScreen*0.1));
    
            } else {
                // For 7" up to 10" tablets
                //if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
                if (SingletonMyInfoLinks.isTablet) {
                    newWidth = widthScreen - ((2 * toPixels(8)) + (int)(widthScreen*0.5));
    
                } else newWidth = widthScreen - ((2 * toPixels(8)) + (int)(widthScreen*0.3));
            }
    
            // Get the scale factor
            float scaleFactor = (float)newWidth/(float)imageWidth;
            // Calculate the new About_Support image height
            int newHeight = (int)(imageHeight * scaleFactor);
            // Set the new bitmap corresponding the adjusted About_Support image
            bitmap = Bitmap.createScaledBitmap(bitmap, newWidth, newHeight, true);
    
            // Rescale the image
            imgDisplay.setImageBitmap(bitmap);
    
            dialogAboutSupport = builder.show();
    
            TextView textViewVersion = (TextView) dialogAboutSupport.findViewById(R.id.action_strVersion);
            textViewVersion.setText(Html.fromHtml(getString(R.string.aboutSupport_text1)+" "+versionName+""));
    
            TextView textViewDeveloperName = (TextView) dialogAboutSupport.findViewById(R.id.action_strDeveloperName);
            textViewDeveloperName.setText(Html.fromHtml(getString(R.string.aboutSupport_text2)+" "+SingletonMyInfoLinks.developerName+""));
    
            TextView textViewSupportEmail = (TextView) dialogAboutSupport.findViewById(R.id.action_strSupportEmail);
            textViewSupportEmail.setText(Html.fromHtml(getString(R.string.aboutSupport_text3)+" "+SingletonMyInfoLinks.developerEmail));
    
            TextView textViewCompanyName = (TextView) dialogAboutSupport.findViewById(R.id.action_strCompanyName);
            textViewCompanyName.setText(Html.fromHtml(getString(R.string.aboutSupport_text4)+" "+SingletonMyInfoLinks.companyName));
    
            Button btnOk = (Button) dialogAboutSupport.findViewById(R.id.btnOK);
    
            btnOk.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialogAboutSupport.dismiss();
                }
            });
    
            dialogAboutSupport.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(final DialogInterface dialog) {
                    // the About & Support AlertDialog is closed
                    activeAboutSupport=false;
                }
            });
    
            dialogAboutSupport.getWindow().setBackgroundDrawable(new ColorDrawable(SingletonMyInfoLinks.atualBackgroundColor));
    
            /* Effect that image appear slower */
            // Only the fade_in matters
            AlphaAnimation fade_out = new AlphaAnimation(1.0f, 0.0f);
            AlphaAnimation fade_in = new AlphaAnimation(0.0f, 1.0f);
            AlphaAnimation a = false ? fade_out : fade_in;
    
            a.setDuration(2000); // 2 sec
            a.setFillAfter(true); // Maintain the visibility at the end of animation
            // Animation start
            ImageView img = (ImageView) messageView.findViewById(R.id.action_infolinks_about_support);
            img.startAnimation(a);
    
        } catch (Exception e) {
            //Log.e(SingletonMyInfoLinks.appNameText +"-" +  getLocalClassName() + ": ", e.getMessage());
        }
    }
    

提交回复
热议问题