gpt4 book ai didi

android - 如何在Android中将一个 fragment 分成两种颜色

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:25:13 25 4
gpt4 key购买 nike

首先我想说请不要将此问题标记为重复。它以一种关键的方式不同于其他帖子。有人知道我可以将 fragment 的颜色从中间分成两种颜色的方法吗?感谢大家!

最佳答案

这里是使用渐变的例子

  float in[] = new float[] {0f,1f};
TextView textView= (TextView)findViewById(R.id.tv_test);
Shader shader = new LinearGradient(
0, textView.getTextSize(), textView.getWidth(), textView.getHeight(), new int[]{Color.RED, Color.BLUE},in,
Shader.TileMode.CLAMP);
textView.getPaint().setShader(shader);

实现Second Simply user Framelayout xml

 <FrameLayout
android:id="@+id/fl_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<LinearLayout
android:id="@+id/ll_test"
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@android:color/white"
android:orientation="horizontal">

<View
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@android:color/holo_red_dark" />

<View
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark" />
</LinearLayout>

<TextView
android:id="@+id/tv_test2"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:gravity="center"
android:text="A"
android:textColor="@android:color/white"
android:textSize="100sp" />

</FrameLayout>

对于 Third one,你必须少写一些并在像素级别上做一些工作

<TextView
android:id="@+id/tv_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="H"
android:textColor="@android:color/holo_red_dark"
android:textSize="100sp" />

<FrameLayout
android:id="@+id/fl_test"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<LinearLayout
android:id="@+id/ll_test"
android:layout_width="200dp"
android:layout_height="100dp"
android:background="@android:color/white"
android:orientation="horizontal">

<View
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@android:color/holo_red_dark" />

<View
android:layout_width="wrap_content"
android:layout_height="100dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_dark" />
</LinearLayout>

<TextView
android:id="@+id/tv_test2"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="@android:color/transparent"
android:gravity="center"
android:text="A"
android:textColor="@android:color/white"
android:textSize="100sp" />

</FrameLayout>

<ImageView
android:id="@+id/iv_test"
android:layout_width="200dp"
android:layout_height="200dp" />

public class MainActivity extends AppCompatActivity {
View linearLayout;
View tvTest2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

TextView textView = (TextView) findViewById(R.id.tv_test);
Shader shader = new LinearGradient(
0, textView.getTextSize()/2, textView.getTextSize(), textView.getTextSize()/2,Color.RED, Color.BLUE,
Shader.TileMode.CLAMP);
textView.getPaint().setShader(shader);

linearLayout = findViewById(R.id.ll_test);
tvTest2 = findViewById(R.id.tv_test2);

}

@Override
protected void onResume() {
super.onResume();

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
ImageView imageView = (ImageView) findViewById(R.id.iv_test);

Bitmap b1 = getBitmapFromView(linearLayout);
Bitmap b2 = getBitmapFromView(tvTest2);
imageView.setImageBitmap(textEffect(b1, b2));
}
},2000);

}

public Bitmap textEffect(Bitmap image, Bitmap text) {
if (image.getWidth() != text.getWidth() ||
image.getHeight() != text.getHeight()) {
throw new IllegalArgumentException("Dimensions are not the same!");
}

for (int y = 0; y < image.getHeight(); ++y) {
for (int x = 0; x < image.getWidth(); ++x) {
int textPixel = text.getPixel(x, y);
int imagePixl = image.getPixel(x,y);

int red = Color.red(textPixel);
int blue = Color.blue(textPixel);
int green = Color.green(textPixel);
int alpha = Color.alpha(textPixel);

Log.i("TAG", "textEffect: "+x+"-"+y+",-->"+red+","+blue+","+green+","+alpha);

/*Since text color is white so give the color of background to it
* else make it white*/
if (red == 255) {
if (blue == 255) {
if (green == 255) {
image.setPixel(x, y, imagePixl);
}else
{
image.setPixel(x, y, textPixel);
}
}else{
image.setPixel(x, y, textPixel);
}
}else
{
image.setPixel(x, y, textPixel);
}
}
}
return image;
}


public static Bitmap getBitmapFromView(View view) {
//Define a bitmap with the same size as the view
Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
//Bind a canvas to it
Canvas canvas = new Canvas(returnedBitmap);
//Get the view's background
Drawable bgDrawable = view.getBackground();
if (bgDrawable != null)
//has background drawable, then draw it on the canvas
bgDrawable.draw(canvas);
else
//does not have background drawable, then draw white background on the canvas
canvas.drawColor(Color.WHITE);
// draw the view on the canvas
view.draw(canvas);
//return the bitmap
return returnedBitmap;
}
}

你到底想达到什么目的??
第一个
第二个
第三个 ??
enter image description here

关于android - 如何在Android中将一个 fragment 分成两种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35557967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com