如何根据值缩放图像颜色

时间:2014-04-11 11:03:44

标签: android

如何根据TextView的百分比填充图像。并且它应该根据TextView的百分比进行更改。在下面的代码中,高度布局正在改变,但我希望图像的颜色应该根据百分比(textview(电池)的值)而改变。

CODE:

 private void displayData(String data) {
    if (data != null) { 
        battery.setText(data);
  int x=Integer.parseInt(battery.getText().toString());
  image_level.getLayoutParams().height = x;
    }
 }

这是我的TextView我得到的数据为100或者大约有60这样的数据。我的ImageView应该填充颜色和显示的那么高的值。

<TextView  android:id="@+id/batterylevel"
 android:layout_width="wrap_content"
 android:layout_height="150dp"
 android:text="BRV Battery" 
 android:layout_below="@+id/sos"/>

<ImageView 
 android:id="@+id/image_level"
 android:layout_width="wrap_content"
 android:layout_height="100dp"
 android:src="@drawable/ic_launcher" 

 android:contentDescription="@string/app_name"/>

在布局中我确实喜欢这个我应该应用任何动画或只是设置任何选项请告诉我。 如果电池TextView为60,则应将蓝色填充至60,将剩余的40填充为白色。

3 个答案:

答案 0 :(得分:1)

你需要使用Clip drawable。

见这里:

http://developer.android.com/guide/topics/resources/drawable-resource.html#Clip

例如在您的代码中:

private void displayData(String data) {
    if (data != null) { 
        battery.setText(data);
  int x=Integer.parseInt(battery.getText().toString());
  ClipDrawable drawable = (ClipDrawable) image_level.getDrawable();
    drawable.setLevel(100 * x);
    }
 }

在你的布局中:

    <ImageView
        android:id="@+id/image_level"
        android:background="@android:color/white"
        android:src="@drawable/clip"
        android:layout_height="50dp"
        android:layout_width="match_parent" />

对于你的drawable / clip.xml:

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@color/myBlueColor"
    android:clipOrientation="horizontal"
    android:gravity="left" />

对于colors.xml中的myBlueColor:

<color name="myBlueColor">#0383f3</color>

答案 1 :(得分:0)

以下我的方法获取电池百分比并将该值传递给imagelevel按钮以显示级别。

          private void displayData(String data) {
    Log.v("______________________No serives_______________",data );
    if (data != null) { 
        battery.setText(data);
        int x=Integer.parseInt(battery.getText().toString());
     image_level.getLayoutParams().height =  x*2;
        Log.v("______BATERY LEVEL_________", "__IN DISPLAYDATA()___DCA__________"+data);
    }

以下代码在布局中显示。

               <RelativeLayout
    android:id="@+id/image_layout"
    android:layout_width="100dp"
android:layout_height="100dp"

android:layout_below="@+id/linearlayout"
  android:background="@drawable/ic_launcher"
>
      <Button
      android:id="@+id/image_level"
android:layout_width="100dp"
 android:layout_height="100dp"
    android:layout_alignParentBottom="true"
    android:background="#8099FFFF"
 android:contentDescription="@string/app_name"/>

答案 2 :(得分:-1)

在您的可绘制文件夹中创建图层列表,如下所示

doubleshade.xml

<item android:drawable="@color/white"/> 
<item android:right="60dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/blue" />
    </shape>
</item>

在您的代码中根据条件

应用此形状
ImageView img = (ImageView) findViewById(R.id.imageView);

        TextView textview = (TextView) findViewById(R.id.textView);
        int per = Integer.parseInt(textview.getText().toString());
        if(per >= 60 )
        {
         img.setImageResource(R.drawable.doubleshade);
        }