2017-04-05 6 views
1

그리기 도구를 만들려고하는데,이 그리기 도구를 사용하면 이미지를 선택하고 스케치에 배치 할 수 있습니다. 그러면 스케치에 배치하여 이후에 조작 할 수 있습니다. 프로젝트에 속한 모든 이미지가 동일한 축척 (1 : 100)으로 설정되었습니다. 작업 영역을 생성하기 위해 프로그램이 수행하는 단계는 다음과 같습니다. 먼저 대화 상자가 나타나 X 축에 작업 영역을 입력하라고합니다 :화면 해상도보다 큰 ImageView의 배율을 잘못 입력했습니다.

public static float setSizeWorkAre() { 
    PointF offsetMtrs = PixsToMts(offset);//65x100 are default value to set the offset point for the plot 
    scale = 1; 
    PointF screenInMts = PixsToMts(screenResolution); 
    return ((areaSelected.x + offsetMtrs.x)/screenInMts.x); 

이 방법 미터 픽셀 변환 :

public static PointF PixsToMts(PointF coordenate) { 
return new PointF((float) ((((coordenate.x * 2.54)/dpi) * scale)/100), 
(float) ((((coordenate.y * 2.54)/dpi) * scale)/100)); 
} 

//prompts user for area size 
String areaX = txtLargeArea.getText().toString(); 

//parse to int 
int area = Integer.parseInt(areaX); 
if (area > 14 && area < 101) { 

    //set atributes from MyConvert Class 
    // 15 is a fixed size for Y axis 
    MyConvert.setAreaSelected(new PointF(area, 15));            
    MyConvert.setScale(MyConvert.setSizeWorkAre()); 

축척대로 기능 setSizeWorkAre 복귀로 설정된 그럼 난 화면 해상도 얻을 : 나는 화면 작업 영역을 설정하는 것이 지금

// class that allows to obtain info about device 
DisplayMetrics metrics = getResources().getDisplayMetrics();         
//set atributes from MyConvert class 
MyConvert.setDpi(metrics.densityDpi); 
MyConvert.setScreenResolution(new 
PointF(metrics.widthPixels,metrics.heightPixels)); 

을, 나는 이미지 배치를 진행합니다 : 이미지가 재 조정됩니다

ImageView newImage = new ImageView(getContext()); 
//set properties for imageView             
newImage.setScaleType(ImageView.ScaleType.CENTER);           
newImage.setAdjustViewBounds(true); 
newImage.setDrawingCacheEnabled(true); 
newImage.setOnTouchListener(this); 

이것은을

imgViewSelected.getLayoutParams().width = (int) 
MyConvert.scaleValue(newImage.getDrawable().getIntrinsicWidth()); 

imgViewSelected.getLayoutParams().height = (int) 
MyConvert.scaleValue(newImage.getDrawable().getIntrinsicHeight()); 
및 scaleValue 방법 :

public static float scaleValue(float value){ 
float resScale= getScale()/122; 

float salida= value/resScale; 
    return salida; 
} 

안드로이드가 자동으로 스케일링 된 다음 내 지침에서 다른 스케일을 다시 수행하는 것과 같이 화면 해상도보다 더 큰 이미지 하나를 선택하기 전까지 이것은 모두 잘 작동합니다.

일부 이미지 무슨 일이 일어나고 있는지의 아이디어를 제공하기 위해이 이미지에서

, 그것은 더 나은 보이는이 작업 영역은 40 이상 (MTS)로 설정되어있는 경우, 정상적으로 작동하는 것으로 나타납니다, 더 큰 값 30 (MTS)로 설정되어이 경우 영역에서 접근

더 당신이 작은에 이미지를 확장 재 얼마나 볼 수 있습니다, 그것은 단지 화면 고해상도보다 큰 이미지를 어떻게 기억

이미지가 없습니다 처리기 전문가가 있습니까? 이 문제에 대한 어떤 힌트라도 높이 평가 될 것입니다.

답변

1

삽입 할 이미지를 래핑하는 프레임 레이아웃을 사용하십시오.

예 :

<FrameLayout 
      android:id="@+id/yourid" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
     </ImageView> 


</FrameLayout> 

FrameLayout이 나 스크롤보기 때문에 이미지 이뤄져은 안드로이드에 의해 다시 조정할 수, 화면 크기에 의해 제한을받을하지는.

+0

매력처럼 작동합니다. – Juanca