有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Multiple TouchImageView在调用一个的setImageDrawable时重置另一个

我试图在一个视图中使用多个TouchImageView。然后在TouchImageView中单击鼠标从图库中拾取图像以在TouchImageView中显示。但问题是,当我在一个TouchImageView中从gallery设置新图像时,另一个也被重置意味着最后一次缩放仍然在TouchImageView的右侧,但图像内部的最后一个位置被重新定位

这是我的密码:

主要活动。xml

<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
tools:context=".MainActivity" 
安卓:orientation="vertical">

<com.example.imagedragpinchtest.TouchImageView 
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:layout_weight="1"
    安卓:id="@+id/TIV1"
    安卓:src="@drawable/ic_launcher"
    安卓:background="@drawable/dashline"
    安卓:layerType="software"
    />
<com.example.imagedragpinchtest.TouchImageView 
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:layout_weight="1"
    安卓:id="@+id/TIV2"
    安卓:src="@drawable/ic_launcher"
    安卓:background="@drawable/dashline"
    安卓:layerType="software"/>
</LinearLayout>

主要活动。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, 安卓.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, 安卓.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

我想不出问题出在哪里,我还试着通过注释TouchImageView类的onSaveInstanceState()onRestoreInstanceState()。但这也不能解决问题。一些帮助将是非常值得的。提前谢谢


共 (0) 个答案