Java 如何在android中仅垂直重复图像?
有没有办法在android中只垂直重复一张图片?我试过这样做:Java 如何在android中仅垂直重复图像?,java,android,image,Java,Android,Image,有没有办法在android中只垂直重复一张图片?我试过这样做: <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/asphalt_texture" android:tileMode="repeat" android:dither="true"/> BitmapDrawable draw = (BitmapDrawable)getR
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/asphalt_texture"
android:tileMode="repeat"
android:dither="true"/>
BitmapDrawable draw = (BitmapDrawable)getResources().getDrawable(R.drawable.draw);
draw.setTileModeY(Shader.TileMode.REPEAT);
但它会双向重复,我只希望它垂直重复,任何想法都会被欣赏 奇怪的是,在XML中似乎没有这样做的方法。然而,通过代码,您可以。以下方法: 你应该做你需要的。只需将其中一个枚举(
REPEAT
,MIRROR
,CLAMP
)传递给需要重复效果的轴(y轴表示垂直)
因此,您应该能够这样做:
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/asphalt_texture"
android:tileMode="repeat"
android:dither="true"/>
BitmapDrawable draw = (BitmapDrawable)getResources().getDrawable(R.drawable.draw);
draw.setTileModeY(Shader.TileMode.REPEAT);
我觉得这是直截了当的:(此代码将在Y中平铺,并在x中重复) 在您的OnWindowFoucChanged中,您可以调用:
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
Drawable d = getRepeatingBG(this, R.drawable.image_that_you_want_to_repeat);
body_view.setBackgroundDrawable(d);
}
private Drawable getRepeatingBG(Activity activity, int center)
{
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled=true;
Bitmap center_bmp = BitmapFactory.decodeResource(activity.getResources(), center, options);
center_bmp.setDensity(Bitmap.DENSITY_NONE);
center_bmp=Bitmap.createScaledBitmap(center_bmp, dm.widthPixels , center_bmp.getHeight(), true);
BitmapDrawable center_drawable = new BitmapDrawable(activity.getResources(),center_bmp);
//change here setTileModeY to setTileModeX if you want to repear in X
center_drawable.setTileModeY(Shader.TileMode.REPEAT);
return center_drawable;
}
嗯,那好像不管用。我这样做了,然后使用image.setImageDrawable(draw);它不会重复。draw.xml是否可以绘制与上面发布的相同,减去tileMode属性?如果我使用draw.setBackgroundDrawable(draw),并同时添加SetTileMode和SetTileMode,它会起作用,但这不符合垂直绘制的目的。
draw.setBackgroundDrawable(draw)
?自行设置?我假设这只是一个打字错误,但是的,如果这不起作用,我没有任何其他建议要补充,不幸的是:(哈哈,是的,那是个打字错误,好吧,我会设法弄清楚的,谢谢你的帮助:)