2012-09-05 17 views
10

में छवि आकार बदलना मुझे कैनवास पर छवियों में एक चुटकी ज़ूम इन/आउट और ड्रैग/ड्रॉप कार्यक्षमता को लागू करने में सफलता मिली।एंड्रॉइड

अब क्या मैं चाहता हूँ फिर से आकार, कि लिंक नीचे की तरह छवियों कि iPhone App के आधार पर enter image description here

How to change shape of an image using iPhone SDK?

तो मैं कैसे एंड्रॉयड में कार्यक्षमता उस तरह प्राप्त कर सकते हैं?

+1

यह सुनिश्चित नहीं है कि पोस्टिंग के एक मिनट के भीतर यह +4 क्यों हो गया है। क्या एक उथल-पुथल समझा सकता है कि यह सवाल इतना बढ़िया क्यों बनाता है? वैसे भी, आपने अभी तक क्या प्रयास किया है? –

+1

http://code.google.com/p/android-multitouch-controller/source/browse/demo/MTPhotoSortr/src/org/metalev/multitouch/photosortr/PhotoSorterView.java?r=3ef1fdcbebe4f016a03c4d956af4ecbf850a925a इस लिंक का उपयोग करते हुए मैं कैनवास में छवियों को सफलतापूर्वक चुटकी/आउट कर चुके हैं। –

+0

@xitij मैं इस तरह की जांच के लिए भी देख रहा हूं ..... अगर मैं इसके आसपास हो जाऊं ... मैं निश्चित रूप से आपको सूचित करूंगा ..... –

उत्तर

0

कस्टम विकल्प शामिल दोनों विकल्प हैं। पहला कस्टम व्यू बनाना है जो आपके "कैनवास" को भरता है। आप Rect ऑब्जेक्ट्स के रूप में दृश्य में 8 नीले और 1 हरे रंग की मंडलियों का ट्रैक रख सकते हैं। onTouchEvent(MotionEvent) ओवरराइड करें और फिर जांचें कि गति घटनाएं आपके किसी भी नियंत्रण में हैं या तदनुसार उन्हें अपडेट करें (मैं यहां कुछ चीजों को सरल बना रहा हूं :))। आपके ऑन टचएवेंट से आप invalidate() पर कॉल करेंगे। आप onDraw(Canvas) पर नियंत्रण खींचने को नियंत्रित कर सकते हैं और अंतिम कॉल के बाद से आपके नियंत्रणों को बदलने के तरीके के अनुसार छवि को अपडेट कर सकते हैं।

दूसरा विकल्प कुछ ऐसा करना है, लेकिन एक दृश्य के साथ जो केवल सर्कल और नियंत्रण को समाहित करता है, जिसका अर्थ यह है कि आसपास के दृश्य को ले जाने के लिए एक कंटेनर की आवश्यकता होगी जो दृश्य को इसके लेआउट पैरामीटर को बदल देगा। ऐसा करने पर, आपके ऑन टचएवेंट विधि को उस लेआउट व्यू के साथ अमान्य ट्रिगर करने की आवश्यकता होगी क्योंकि इसे आपके दृश्य के आकार और स्थिति को फिर से समझना होगा। यह निश्चित रूप से कठिन होगा लेकिन आप जो व्यक्तिगत विचारों के साथ काम करने की कोशिश कर रहे हैं उसके आधार पर कोड में आपकी मंडलियों के प्रतिनिधित्व को एक ही दृश्य में बनाए रखने से बेहतर हो सकता है।

1

मूल रूप से आप

img=(ImageView)findViewById(R.id.yourimageidfromxml); 

img.onTouchEvent(MotionEvent me) 
{ 
    int X=me.getX(); 
    int Y=me.getY(); 
    img.invalidate(); 
    img.repaint(X,Y); 

} 

void paint(int X,int Y) 
{ 
    img.setWidth(X); 
    img.setHeight(Y); 
} 

छवि स्केलिंग शुरुआत

0

छवि के आकार बदलने से कैनवास पर फिर से रंगना का उपयोग कर बदल शुरुआत :: से कैनवास पर छवि और फिर से ड्रा रद्द करने के लिए की जरूरत है स्केल टाइप "fitXY" के साथ एक साधारण छवि दृश्य का उपयोग कर हासिल किया जा सकता है।

आपको नीले आकार का आकार स्वयं जोड़ना होगा।

चित्र (हरी संभाल) के रोटेशन बदलने का उपयोग करके प्राप्त किया जा सकता है:

public static Bitmap rotate(Bitmap src, float degree) { 
    // create new matrix 
    Matrix matrix = new Matrix(); 
    // setup rotation degree 
    matrix.postRotate(degree); 

    // return new bitmap rotated using matrix 
    return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true); 
} 

स्रोत: http://xjaphx.wordpress.com/2011/06/22/image-processing-rotate-image-on-the-fly/

अधिक एंड्रॉयड इमेज प्रोसेसिंग उदाहरण के लिए http://xjaphx.wordpress.com/learning/tutorials/ देखें।

1

से तो फिर से आकार देने आप ऊर्ध्वाधर और क्षैतिज विमान पर करने के लिए "खींच" बिटमैप बात कर रहे हैं तो आप बस रेक्ट कि आकार (जैसे। अंडाकार) में तैयार किया जा रहा है को संशोधित।

उदाहरण के लिए:

यह एक अंडाकार के अपने मूल आकार है:

canvas.drawOval(new Rect(0,0,100,100), bluePaint); 

यह वही अंडाकार, बस फैला (आकृति परिवर्तन) क्षैतिज तल पर है:

canvas.drawOval(new Rect(0,0,200,100), bluePaint); 

आशा है कि ये आपकी मदद करेगा।