android根据坐标改变颜色,【Android】获取当前坐标的颜色不准确。

[Java] 纯文本查看 复制代码package com.ykd.bed.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Color;

import android.graphics.drawable.BitmapDrawable;

import android.media.Image;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com.ykd.bed.R;

import com.ykd.bed.base.BaseActivity;

import com.ykd.bed.utils.DrawView;

import org.json.JSONArray;

import org.json.JSONException;

import butterknife.BindView;

public class RGBActivity extends BaseActivity implements View.OnTouchListener, View.OnClickListener {

@BindView(R.id.iv_back)

ImageView ivBack;

@BindView(R.id.colorpan)

ImageView colorpan;

@BindView(R.id.colortext)

TextView textView;

@BindView(R.id.rgblayout)

RelativeLayout relativeLayout;

private Bitmap bitmap;

@Override

protected String getClassName() {

return RGBActivity.class.getSimpleName();

}

@Override

protected int getViewId() {

return R.layout.activity_r_g_b;

}

@Override

protected void initView() {

ivBack.setOnClickListener(this);

bitmap = ((BitmapDrawable) colorpan.getDrawable()).getBitmap();

colorpan.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

int x = (int) event.getX()+100;

int y = (int) event.getY()+150;

try{

if (event.getAction() == MotionEvent.ACTION_UP) {

Toast.makeText(mContext,x+"...."+y+"",Toast.LENGTH_SHORT).show();

int color = bitmap.getPixel(x, y);

// 如果你想做的更细致的话 可以把颜色值的R G B 拿到做响应的处理

int r = Color.red(255-color);

int g = Color.green(255-color);

int b = Color.blue(255-color);

textView.setText( "r=" + r + ",g=" + g + ",b="

+ b);

textView.setTextColor(Color.rgb(r,g,b));

}else if(event.getAction()==MotionEvent.ACTION_MOVE){

int color = bitmap.getPixel(x, y);

// 如果你想做的更细致的话 可以把颜色值的R G B 拿到做响应的处理

int r = Color.red(color);

int g = Color.green(color);

int b = Color.blue(color);

textView.setText( "r=" + r + ",g=" + g + ",b="

+ b);

}}catch (Exception e){

e.printStackTrace();

}

return true;

}

});

}

@Override

public boolean onTouch(View view, MotionEvent motionEvent) {

return false;

}

@Override

public void onClick(View view) {

switch (view.getId()){

case R.id.iv_back:

finish();

break;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值