をサポートしていますので、私は、私は形状を作成することができますし、またそれをXMLに変換するために、回転された画像をandroid:scaleY="-1"
属性とし、の先端をdrawPath
で描画します。 必要に応じて、画像とトライアングルの角度をscaleType
に変更してください。
layout.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/imgInvertTip"
android:layout_width="match_parent"
android:layout_height="90dp"
android:scaleType="centerCrop"
android:scaleY="-1"/>
<ImageView
android:id="@+id/imgPhoto"
android:layout_width="match_parent"
android:layout_height="400dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/imgInvertTip"
android:scaleType="fitXY"/>
</RelativeLayout>
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView imgInvertedTip = (ImageView) findViewById(R.id.imgInvertTip);
ImageView imgPhoto = (ImageView) findViewById(R.id.imgPhoto);
Drawable photo = AppCompatResources.getDrawable(getApplicationContext(), R.drawable.photo);
imgInvertedTip.setBackground(photo);
imgPhoto.setImageDrawable(photo);
ViewTreeObserver vto = imgInvertedTip.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
imgInvertedTip.getViewTreeObserver().removeOnPreDrawListener(this);
int width = imgInvertedTip.getMeasuredWidth();
int height = imgInvertedTip.getMeasuredHeight();
Bitmap tip = createTip(width, height);
imgInvertedTip.setImageBitmap(tip);
return true;
}
});
}
private Bitmap createTip(int width, int height) {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(android.graphics.Color.WHITE);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setAntiAlias(true);
int tipStep = height/2;
Point a = new Point(tipStep, 0);
Point b = new Point(tipStep * 2, 90);
Point c = new Point(tipStep * 3, 0);
Path path = new Path();
path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
path.lineTo(a.x, a.y);
path.lineTo(b.x, b.y);
path.lineTo(c.x, c.y);
path.close();
Bitmap tip = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(tip);
canvas.drawPath(path, paint);
return tip;
}
あなたはJavaでプリミティブを使用して図形を描画する必要があります。そうすれば、どこでも100%サポートされます。あなたは本当にXMLを全く必要としません。 – durbnpoisn
9patch PNGファイルを使用する – theBugger
@durbnpoisnどのようにすればいいのですか?すべてのリソースをお勧めします – user46772