public class TouchView extends ImageView {
Bitmap bitmap;
double bmWidth, bmHeight;
public TouchView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}
public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();
}
public TouchView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init();
}
private void init(){
bitmap = ((BitmapDrawable)getBackground()).getBitmap();
bmWidth = (double)bitmap.getWidth();
bmHeight = (double)bitmap.getHeight();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
MeasureSpec.getSize(heightMeasureSpec));
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
float x = event.getX();
float y = event.getY();
int color = getColor(x, y);
((AndroidDetechTouchActivity)getContext()).updateMsg("[email protected]" + x + " : " + y, color);
break;
case MotionEvent.ACTION_UP:
((AndroidDetechTouchActivity)getContext()).updateMsg("", 0);
break;
}
return true;
}
private int getColor(float x, float y){
if (x < 0 || y < 0 || x > (float)getWidth() || y > (float)getHeight()){
return 0; //Invalid, return 0
}else{
//Convert touched x, y on View to on Bitmap
int xBm = (int)(x * (bmWidth/(double)getWidth()));
int yBm = (int)(y * (bmHeight/(double)getHeight()));
return bitmap.getPixel(xBm, yBm);
}
}
}
संशोधित updateMsg() मुख्य गतिविधि, AndroidDetechTouchActivity.java, की विधि रंग शामिल हैं और TextView के textcolor अद्यतन करने के लिए।
public class AndroidDetechTouchActivity extends Activity {
TextView msg;
TouchView touchView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
msg = (TextView)findViewById(R.id.msg);
touchView = (TouchView)findViewById(R.id.touchview);
}
public void updateMsg(String tMsg, int color){
msg.setTextColor(color);
msg.setText(tMsg);
}
}
स्रोत
2016-03-04 06:26:12
यह बुरी तरह अक्षम और बोझिल लगता है की आवश्यकता है। अन्य विकल्पों का पता क्यों नहीं लगाओ? – JoxTraex
आपकी सेवा में प्रसारण रिसीवर का उपयोग करें और अपनी गतिविधि से प्रसारण भेजें, और अपनी सेवा में प्रसारण की सदस्यता लें – Bhargav
यहां क्या उद्देश्य है? आप क्या जांचने की कोशिश कर रहे हैं? आप जानना चाहते हैं कि उदाहरण के लिए जब किसी मैपेंटा पिक्सेल को एक्स पर प्रदर्शित किया जाता है, तो किसी भी ऐप से स्क्रीन पर वाई स्थिति (जैसे फेसबुक)? उत्तर सभी आपके ऐप के भीतर ही प्रस्तुत की गई चीज़ों को देख रहे हैं, इसलिए आपको –