Android画像はクリック拡大縮小を実現

13259 ワード

Android画像はクリック拡大縮小を実現
レコード使用
 <ImageView
       android:id="@+id/iv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:src="@drawable/opencar"/>
 public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private ImageView iv;
    private static final String TAG = "MainActivity";
    public boolean isAmplification=false;
    /**
     * false              
     *true     
     * */
    public Matrix matrix=new Matrix();
    public Bitmap bitmap;
    public float scaleWidth;
    public float scaleHeight;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DisplayMetrics dm=new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int height=dm.heightPixels;
        int width=dm.widthPixels;
        /*           */
        initView();
        bitmap=((BitmapDrawable)iv.getDrawable()).getBitmap();// imageview  src   
        scaleWidth=width/bitmap.getWidth();//   
        scaleHeight=height/bitmap.getHeight();
    }


    private void initView() {
        iv = (ImageView) findViewById(R.id.iv);
        iv.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId())
        {
            case R.id.iv:
                if(!isAmplification)
                {
                    /*   */
                    matrix.set(iv.getImageMatrix());
                    matrix.postScale(scaleWidth,scaleHeight);
                    Bitmap newbitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
                    iv.setImageBitmap(newbitmap);
                    isAmplification=true;
                }
                else {
                    /*  */
                    matrix.set(iv.getImageMatrix());
                    matrix.postScale(1.0f,1.0f);
                    Bitmap newbitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
                    iv.setImageBitmap(newbitmap);
                    isAmplification=false;
                }
                break;


            default:break;

        }
    }
}