Я пытаюсь использовать несколько TouchImageView в одном представлении. Затем одним щелчком в TouchImageView выберите изображение из галереи для отображения в TouchImageView. Но проблема в том, что когда я устанавливаю новое изображение из галереи в одном TouchImageView, другое также сбрасывается, что означает, что последнее масштабирование по-прежнему находится справа от этого TouchImageView, но последняя позиция изображение внутри, которое перемещается.
Вот мой код:
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<com.example.imagedragpinchtest.TouchImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/TIV1"
android:src="@drawable/ic_launcher"
android:background="@drawable/dashline"
android:layerType="software"
/>
<com.example.imagedragpinchtest.TouchImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/TIV2"
android:src="@drawable/ic_launcher"
android:background="@drawable/dashline"
android:layerType="software"/>
</LinearLayout>
MainActivity.java
package com.example.imagedragpinchtest;
public class MainActivity extends Activity {
TouchImageView tiv1,tiv2;
int selected = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tiv1 = (TouchImageView) findViewById(R.id.TIV1);
tiv2 = (TouchImageView) findViewById(R.id.TIV2);
tiv1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
selected = 1;
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, selected);
}
});
tiv2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
selected = 2;
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, selected);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
String imgPath = getPathFromUri(data.getData());
Log.e("new", imgPath);
if(selected == 1)
tiv1.setImageDrawable(new BitmapDrawable(getResources(), imgPath));
if(selected == 2)
tiv2.setImageDrawable(new BitmapDrawable(getResources(), imgPath));
}
}
public String getPathFromUri(Uri uri) {
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(uri,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
return picturePath;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Библиотека TouchImageView.javaсильный>
Я не могу понять, в чем проблема, я также попытался закомментировать onSaveInstanceState() и onRestoreInstanceState() в TouchImageView. сорт. Но и это не решает проблему. Некоторая помощь будет действительно ощутимой. Заранее спасибо.....