我试图在ImageView中获取一张照片,以便在点击时增加尺寸。我搜索了好几天,但还没找到我需要的东西。 目前我正在使用来自MikeOrtiz的TouchImageView,它的工作原理是,当点击图像时,它会放大。 但是我希望图像尺寸增大,而不仅仅是放大,并且在保持页面的其余部分不透明的情况下,图像需要增加到屏幕的大小,同时保持其纵横比,即它是方形图像,所以它不应该变成矩形图像。
我有以下XML代码:
<LinearLayout
<com.example.TouchImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="14dp"
android:contentDescription="@string/CompanyHeader"
android:src="@drawable/entrancex250"/>
</LinearLayout>
我使用的是TouchImageView:
https://github.com/MikeOrtiz/TouchImageView/blob/master/src/com/ortiz/touch/TouchImageView.java
正如所解释的那样,它的作用是放大,但我需要的是在点击时使图像本身变大,然后再次点击时恢复到正常尺寸。
非常感谢。
答案 0 :(得分:2)
public class TheCompany extends Activity implements OnMenuItemClickListener{
public static final float screen_width;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.the_company);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
screen_width = metrics.widthPixels;
}
}
然后在你的页面中执行以下操作:
ImageView imageView = (ImageView) findViewById(R.id.imageView2);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
float scale = TheCompany.screen_width / view.getWidth();
if(view.getScaleX() == 1) {
view.setScaleY(scale);
view.setScaleX(scale);
}else{
view.setScaleY(1);
view.setScaleX(1);
}
}
});
答案 1 :(得分:2)
如果您只需要增加ImageView的大小,那么您根本不应该使用TouchImageView,而应该使用ImageView。
<ImageView
android:id="@+id/image_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/picture"
android:clickable="true" />
在此imageview中的java类setonclicklistener中,在onclick内部通过设置布局参数来更改imageview的大小。
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(newWidth, newHeight);
imageView.setLayoutParams(params);
此处newWidth和newHeight是您想要点击图片视图的尺寸。
答案 2 :(得分:0)
看看这个很棒的图书馆:PhotoView
它支持缩放并具有点击侦听器,因此您只需缩放
即可答案 3 :(得分:0)
替代方案可以使用以下代码
TouchImageView v = (TouchImageView) getActivity().findViewById("imageView2");
v.setHeight(fill_parent);
v.setWidth(fill_parent);
答案 4 :(得分:0)
由于@micnubinub,我想放下我最后做的事情。我把他的答案作为正确答案,因为他们帮助我到达了我需要的地方。但实际的代码不在答案中,所以我想把它放在这里,万一它可以帮助其他人。
首先,@micnubinub建议我在点击时使用对话框显示图像。所以我在res / layout下创建了一个dialog.xml,如下所示:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:minHeight="910dp"
android:minWidth="910dp"
android:scaleType="fitCenter"
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
然后单击时显示图像的Java类如下:
final ImageView imageView = (ImageView) findViewById(R.id.imageView2);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Dialog dialog = new Dialog(TheCompany.this, R.style.CustomDialog);
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE) {
// on a large screen device ...
dialog.setContentView(R.layout.dialog_xlarge);}
else dialog.setContentView(R.layout.dialog);
ImageView im = (ImageView) dialog.findViewById(R.id.imageView);
im.setImageResource(R.drawable.entrancex250);
im.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
dialog.show();
Window window = dialog.getWindow();
window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
}
});
}
我还在样式中创建了一个customdialog,如下所示:
<style name="CustomDialog" parent="@android:style/Theme.Translucent.NoTitleBar">
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowEnterAnimation">@anim/zoom_in</item>
<item name="android:windowExitAnimation">@anim/zoom_out</item>
</style>
这非常有效,再次感谢@micnubinub。
dialog_xlarge与对话框相同,但高度和宽度较大。