2013-05-07 1 views
0

비트 맵을 크기 조정하고 이동할 수있게 해주는이 유용한 코드를 발견했으며이 코드를 내 앱에서 사용하는 방법을 찾으려고 노력했습니다. 나는 클래스가 사용되는 방식을 정말로 이해하지 못한다. (자바 코더를 가르쳤으므로 여기서는 약간의 기초가 빠져있다.) 나는 기본적으로 갤러리를 열고이 코드에서 사용할 수있는 파일을 선택할 수 있기를 원합니다. 이 모든 것을 표준 ImageView로 할 수는 있지만 ImageView에서는 확대/축소 할 수 없습니다.android 사용자 정의 그래픽을 포함하도록보기를 어떻게 업데이트합니까?

기본 클래스는 touchexampleview 클래스를 사용하여 이미지를 화면에 배치하고 touchexampleview 클래스는 기본 이미지를로드하는 행을 포함합니다.

클래스에서이를 변경하는 방법을 알아볼 수는 있지만 동적으로이를 수행하고 사용자 중심으로 할 수 있기를 바랍니다.

다음은 기본 클래스입니다.

public class TouchExampleActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TouchExampleView view = new TouchExampleView(this); 

     view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 
       ViewGroup.LayoutParams.MATCH_PARENT)); 

     setContentView(view); 

    } 
} 

과 touchexampleview 클래스 I는 확실하지 않다, 그러나 이것은 당신이 찾고있는

public class TouchExampleView extends View { 
    private Drawable mIcon; 
    private float mPosX; 
    private float mPosY; 

    private VersionedGestureDetector mDetector; 
    private float mScaleFactor = 1.f; 

    public TouchExampleView(Context context) { 
     this(context, null, 0); 
    } 

    public TouchExampleView(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public TouchExampleView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 

     mIcon = context.getResources().getDrawable(R.drawable.ic_launcher); 
     mIcon.setBounds(0, 0, mIcon.getIntrinsicWidth(), mIcon.getIntrinsicHeight()); 

     mDetector = VersionedGestureDetector.newInstance(context, new GestureCallback()); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     mDetector.onTouchEvent(ev); 
     return true; 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 

     canvas.save(); 
     canvas.translate(mPosX, mPosY); 
     canvas.scale(mScaleFactor, mScaleFactor); 
     mIcon.draw(canvas); 
     canvas.restore(); 
    } 

    private class GestureCallback implements VersionedGestureDetector.OnGestureListener { 
     public void onDrag(float dx, float dy) { 
      mPosX += dx; 
      mPosY += dy; 
      invalidate(); 
     } 

     public void onScale(float scaleFactor) { 
      mScaleFactor *= scaleFactor; 

      // Don't let the object get too small or too large. 
      mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f)); 

      invalidate(); 
     } 
    } 
} 
+0

그래서 사용자가 선택한 이미지로 'Drawable mIcon'을 변경 하시겠습니까? –

+0

예. 맞습니다. 메인 클래스에서 변경하고 싶습니다만, 이제 사용자가 선택한 이미지로 뷰를 생성하여 작동 시켰습니다. Bitmap으로이 작업을 수행 할 수 있는지 알아 내려고 노력하고 있지만? – Purplemonkey

+0

이 일을 할 수 있다고 생각합니다. 'Drawable'을'Bitmap'으로 변경하고'onDraw'에서 시도하십시오'canvas.drawBitmap (bitmap, null, null)' –

답변

0

?

imageSpot.setImageResource(R.drawable.myImage); 
+0

그는 사용자가 선택한 이미지를 어떻게 표시하는지 알고 싶어합니다. – CoderOfHonor

+0

위의 설명이 정확합니다. 위 예제에서 touchExampleActivity – Purplemonkey

+0

ive는 시도하지 않았지만 ImageView를 static으로 설정하면 위 클래스의 이미지를 업데이트/변경할 수 있기를 원합니다. – Evorlor

관련 문제