我想在背景上有一个较小的图片/背景颜色的背景,但我希望较小的图片/背景的边缘有褪色的边缘,所以它不仅仅是一个方形砖。
这里是我的FrameLayout上的背景图像和Framelayout内的LinearLayout上的白色代码:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
tools:context="com.example.snake.LevelScoreActivity"
tools:ignore="MergeRootFrame"
android:background="@drawable/snakebackground">
<TextView
android:id="@+id/outputTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:layout_gravity="center_horizontal"
android:text="Level X Score"
android:textSize="14dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:background="#ffffff">
<TextView
android:id="@+id/output"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:text="Username" />
<TextView
android:id="@+id/output2"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:text="Score" />
<TextView
android:id="@+id/output3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:text="Timestamp" />
</LinearLayout>
<TextView
android:id="@+id/outputNoScore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:gravity="center"
android:layout_gravity="center"
android:text=""
android:textSize="14dp"/>
</FrameLayout>
我该怎么做?
答案 0 :(得分:0)
您应该直接在图像编辑器软件中淡化图像,而不是在Android应用程序中进行淡化,而淡入淡出宽度取决于变量......
答案 1 :(得分:0)
尝试这个自定义BitmapDrawable:
class BD extends BitmapDrawable {
private Paint mPaint;
private Paint mSrcInPaint;
private int mRadius;
private Rect mDrawRect;
public BD(Resources res, Bitmap b, int radius) {
super(res, b);
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setMaskFilter(new BlurMaskFilter(radius, Blur.NORMAL));
mSrcInPaint = new Paint();
mSrcInPaint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
mRadius = radius;
mDrawRect = new Rect();
}
@Override
public void draw(Canvas canvas) {
int cnt = canvas.saveLayer(null, null, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
mDrawRect.set(getBounds());
mDrawRect.inset(mRadius, mRadius);
canvas.drawRect(mDrawRect, mPaint);
canvas.saveLayer(null, mSrcInPaint, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
super.draw(canvas);
canvas.restoreToCount(cnt);
}
}