我正在开发一个Android应用程序,我有一个可绘制的,我正在从源图像加载.在这个图像上,我想将所有白色像素转换为不同的颜色,比如说蓝色,然后缓存生成的Drawable对象,以便稍后使用.
例如,假设我有一个20x20的PNG文件,中间有一个白色圆圈,圆圈外的所有内容都是透明的.将白色圆圈变为蓝色并缓存结果的最佳方法是什么?如果我想使用该源图像创建几个新的Drawables(比如蓝色,红色,绿色,橙色等),答案是否会改变?
我猜我想以某种方式使用ColorMatrix,但我不确定如何.
我正在创建一个将在所有Android设备上运行的应用程序.我想为我的应用程序创建xhdpi Graphics.我的应用程序全屏.我对创建图形很困惑.谁能告诉我背景图像的最佳尺寸(以像素为单位).
例如:
建议我在所有设备上出现的最佳尺寸.因为我的图形是我的应用程序的核心.
我希望每台设备都能获得想要的最佳图像.Android将不参与压缩或扩展图像.
我有一个drawable,我用作LinearLayout的背景.我想在运行时更改此Shape的颜色.我尝试过使用几种方法..但都没有用.
我遵循了这里描述的方法:http://www.anddev.org/android-2d-3d-graphics-opengl-problems-f55/change-shape-drawable-solid-color-t16798.html
但是有同样的问题......它不会崩溃..但颜色不会改变!
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00A6C1" />
<corners android:radius="@dimen/square_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)
代码片段:
GradientDrawable drawable = (GradientDrawable) activity.getResources().getDrawable(R.drawable.blue_square_shape);
int color = ((Application) getApplication()).getColor();
drawable.setColor(color);
block.findViewById(R.id.blockSquare).setBackgroundDrawable(drawable);
findViewById(R.id.blockSquare).postInvalidate();
Run Code Online (Sandbox Code Playgroud)
任何线索?我已经过了一整天谷歌搜索...而且它变得很烦人......
更新:
当我尝试对此形状执行相同操作时:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shape" android:shape="rectangle">
<gradient android:startColor="#1FBCCF" android:endColor="#06A4C1"
android:angle="270" />
<corners android:topLeftRadius="@dimen/footer_corners"
android:topRightRadius="@dimen/footer_corners" />
</shape>
Run Code Online (Sandbox Code Playgroud)
颜色变成黑色......我想它可以改变...
我正在开发小型Android应用程序,其中我将drawable资源设置为线性布局的背景.现在,我想要做的是动态地改变线性布局的背景颜色,但是在可绘制资源中.我的代码看起来像:
// bcd.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:endColor="#22000000"
android:startColor="#22000000"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/white" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
<LinearLayout
android:id="@+id/lin_llt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
Run Code Online (Sandbox Code Playgroud)
我在我的活动中设置了线性布局的背景,如下所示......
parentLayout = (LinearLayout) view.findViewById(R.id.lin_llt);
parentLayout.setBackgroundResource(R.drawable.bcd);
Run Code Online (Sandbox Code Playgroud)
现在我想做什么我想改变我的可绘制资源的颜色,这意味着改变我的线性布局的颜色,圆角和填充定义在drawable ..
我按照以下方式尝试了这个
ShapeDrawable bgShape = (ShapeDrawable )parentLayout.getBackground();
bgShape.getPaint().setColor(Color.BLACK);
Run Code Online (Sandbox Code Playgroud)
但它不适合我.任何其他解决方案
那怎么办......需要帮助......谢谢......
我有以下xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<corners android:radius="10dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它只是一个带圆角的形状.我将它用于活动布局中的背景,如下所示:
android:background="@drawable/rounded_corners"
Run Code Online (Sandbox Code Playgroud)
文件中的形状当前设置为白色.在不同的布局中,我需要不同的颜色.我是否需要为每种颜色创建不同形状的xml文件?我需要一种方法来在布局中指定要发送到背景的颜色,这样我就可以使用相同的xml来获得我想要的任何颜色.
谢谢.
我正在开发一个具有多种形式的应用程序,但我想要对它产生一些影响。我想要做的是改变放置在里面的图标的颜色edit text。
<EditText
android:id="@+id/marks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/button1"
android:layout_alignParentTop="true"
android:layout_marginTop="10dp"
android:drawableRight="@drawable/ic_border"
android:hint="Total Marks"
android:inputType="number"
android:textColor="#fff" />
Run Code Online (Sandbox Code Playgroud) 我在我的Android应用程序中使用Mapbox,并为我的标记设置了自定义(黑色)图标.如果它是黑色的话,是否可以将标记的图标颜色更改为其他颜色?
如果可以使用默认图标,我也可以使用默认图标.
我想以编程方式从我的按钮更改我的图标颜色...
在我的xml上,我有:
android:drawableTint="@color/colorPrimary"
android:drawableTop="@drawable/ic_car_black_24dp"
Run Code Online (Sandbox Code Playgroud)
设置图标并设置图标颜色...但我想从我的java端更改图标颜色...
有人能帮我吗?
<android.support.v7.widget.AppCompatButton
android:id="@+id/bt_search_vehicle_car"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/eight_density_pixel"
android:layout_weight="1"
android:background="@drawable/background_rounded_blue_border"
android:drawableTint="@color/colorPrimary"
android:drawableTop="@drawable/ic_car_black_24dp"
android:padding="@dimen/eight_density_pixel"
android:text="Carros"
android:textAllCaps="false"
android:textColor="@color/colorPrimary" />
Run Code Online (Sandbox Code Playgroud) 我有一个滚动视图,其中包含很多图像。我想实现一个高亮区域,该区域会更改其下方所有视图的颜色(仅该区域下方的部分视图)
这是布局,vOverlayColor是我要设置覆盖颜色的视图。
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_large"
android:adjustViewBounds="true"
android:src="@drawable/ic_delete"
android:tint="@color/colorGreyDark"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_large"
android:adjustViewBounds="true"
android:src="@drawable/ic_delete"
android:tint="@color/colorGreyDark"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_large"
android:adjustViewBounds="true"
android:src="@drawable/ic_delete"
android:tint="@color/colorGreyDark"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_large"
android:adjustViewBounds="true"
android:src="@drawable/ic_delete"
android:tint="@color/colorGreyDark"
tools:ignore="ContentDescription" />
<ImageView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_large"
android:adjustViewBounds="true"
android:src="@drawable/ic_delete"
android:tint="@color/colorGreyDark"
tools:ignore="ContentDescription" />
</LinearLayout>
</ScrollView>
<View
android:id="@+id/vOverlayColor"
android:layout_width="match_parent"
android:layout_height="120dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
你有什么建议吗?
android android-layout android-view android-constraintlayout
我在自定义列表视图项目中有一个按钮,我正在使用以下可绘制的xml文件:
rounded_corner.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="120dp" android:layout_height="100dp">
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<solid android:color="#002832" />
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<corners android:radius="5dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我使用了"#002832"颜色作为drawable.现在,我想以编程方式更改可绘制文件的颜色.我怎样才能做到这一点?
请在没有理解问题的情况下停止标记为重复.
我检查了@Ganesh Pokele SO链接anf,它完全不同.
我查了@bizzard提供的链接但无法解决我的问题.
android android-layout android-xml android-adapter android-drawable
我正在尝试在我的RecyclerView中使用以下代码使用可绘制着色
Drawable likeDrawable = ContextCompat.getDrawable(getActivity(), R.drawable.ic_thumb_up);
Drawable likeWrappedDrawable = DrawableCompat.wrap(likeDrawable);
DrawableCompat.setTint(likeWrappedDrawable,ContextCompat.getColor(getActivity(), android.R.color.white));
holder.ivLike.setImageDrawable(likeWrappedDrawable);
Run Code Online (Sandbox Code Playgroud)
现在,所有这些工作都在onBindViewHolderRecyclerView Adapter的中完成。
我会根据该列表项的状态在三种颜色之间更改此色调。对于Lolipop及更高版本,这一切正常,但在此版本以下,列表项目的颜色是无法预测的。有时它显示正确的颜色,但刷新列表时有时会更改为其他颜色。
Anything im doing wrong here or the tinting thing on pre-lollipop is still unusable in this particular case?
Update
Including the code from my onBindViewHolder
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
...
Drawable likeDrawable =
ContextCompat.getDrawable(getActivity(), R.drawable.ic_thumb_up);
Drawable likeWrappedDrawable = DrawableCompat.wrap(likeDrawable);
holder.tvLikeCount.setTextColor(ResUtil.getColor(R.color.light_font,
getActivity()));
DrawableCompat.setTint(likeWrappedDrawable,
ContextCompat.getColor(getActivity(), android.R.color.white));
if (tweetModel.isFavorited()) {
DrawableCompat.setTint(likeWrappedDrawable,
ContextCompat.getColor(getActivity(), android.R.color.holo_blue_light));
}
holder.ivLike.setImageDrawable(likeWrappedDrawable);
}
Run Code Online (Sandbox Code Playgroud)