Java 调用一个的setImageDrawable时,Multiple TouchImageView会重置另一个
我试图在一个视图中使用多个。然后在TouchImageView中单击,从图库中拾取图像以在TouchImageView中显示。但问题是,当我在一个TouchImageView中设置gallery中的新图像时,另一个也被重置,这意味着最后一次缩放仍在该TouchImageView的右侧,但图像在其中的最后一个位置被重新定位 这是我的密码: activity_main.xml 图书馆Java 调用一个的setImageDrawable时,Multiple TouchImageView会重置另一个,java,android,touchimageview,Java,Android,Touchimageview,我试图在一个视图中使用多个。然后在TouchImageView中单击,从图库中拾取图像以在TouchImageView中显示。但问题是,当我在一个TouchImageView中设置gallery中的新图像时,另一个也被重置,这意味着最后一次缩放仍在该TouchImageView的右侧,但图像在其中的最后一个位置被重新定位 这是我的密码: activity_main.xml 图书馆 我无法找出问题所在,我还尝试注释掉TouchImageView类的onSaveInstanceState和onRes
我无法找出问题所在,我还尝试注释掉TouchImageView类的onSaveInstanceState和onRestoreInstanceState。但这也不能解决问题。一些帮助将是非常值得的。提前感谢….你能解决这个问题吗?@realcasully不,不是用TouchImageView。后来我切换到并根据我的规格修改了它。虽然它不如TouchImageView,但由于缩放有时会跳跃。。。。。
<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>
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;
}
}