java इसके केंद्र के चारों ओर छवि दृश्य घुमाएं




android imageview (3)

मान लें कि आप API 11 को लक्षित कर रहे हैं, सबसे आसान तरीका है:

view.setPivotX(view.getWidth() / 2);
view.setPivotY(view.getHeight() / 2);

float rotation = //some value between 0f and 360f
view.setRotation(rotation);

https://code.i-harness.com

मैं एक एनालॉग घड़ी बनाना चाहता हूं और मुझे एक समस्या है। मैं सेक, मिनट और घंटा हाथों के लिए 3 छविदृश्य का उपयोग करता हूं और अब मैं चाहता हूं कि उनमें से प्रत्येक केंद्र को घुमाए लेकिन मैं नहीं कर सकता मैं केंद्र के चारों ओर कोण देकर एक छवि दृश्य कैसे घुमा सकता हूं?


नीचे पाठ दृश्य घूमने के लिए कोड है। यह एपीआई 8 भी काम करता है यह सिर्फ पाठ दृश्य अनुकूलित है जिसे आपको इसके उद्देश्य का निर्माण करना है। और रोटेशन परीक्षक को सेट करने की आवश्यकता है (यदि आवश्यक हो तो अनुवाद भी।)

सार्वजनिक वर्ग वर्टिकलटेक्स्टव्वेज छवि दृश्य (अंतिम बुलियन शीर्षवर्ती = सच;

    float iRotateAngel, iSetX, iSetY;

    int iIndex;

    Context context;

    public int getiIndex()
        {
            return iIndex;
        }

    public void setiIndex(int iIndex)
        {
            this.iIndex = iIndex;
        }

    public float getiRotateAngel()
        {
            return iRotateAngel;
        }

    public void setiRotateAngel(float iRotateAngel)
        {
            this.iRotateAngel = iRotateAngel;
        }

    public float getiSetX()
        {
            return iSetX;
        }

    public void setiSetX(float iSetX)
        {
            this.iSetX = iSetX;
        }

    public float getiSetY()
        {
            return iSetY;
        }

    public void setiSetY(float iSetY)
        {
            this.iSetY = iSetY;
        }

    public boolean isTopDown()
        {
            return topDown;
        }



    public VerticalTextView(Context context)
        {
            super(context);
            this.context = context;
        }

    public VerticalTextView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
        {
            super.onMeasure(heightMeasureSpec, widthMeasureSpec);
            setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth());
        }

    @Override
    protected boolean setFrame(int l, int t, int r, int b)
        {
            return super.setFrame(l+32, t+12, l + (b - t)+32, t + (r - l)+12);
        }
    @Override
    public void draw(Canvas canvas)
        {
            if (topDown)
                {

                    canvas.translate(this.iSetX, this.iSetY);
                    canvas.rotate(this.iRotateAngel);
                }
            else
                {

                    canvas.translate(this.iSetX, this.iSetY);
                    canvas.rotate(this.iRotateAngel);
                }
            canvas.clipRect(0,0,getWidth(), getHeight(), android.graphics.Region.Op.REPLACE);
            super.draw(canvas);

        }
}

दृश्य क्लास में एक .setRoatation() विधि है जो पूरी तरह से काम करेगी। बस इसे बारी बारी से करने के लिए कई डिग्री पास और यह, डिफ़ॉल्ट रूप से, केंद्र के चारों ओर घुमाएगी

संपादित करें:

11 के नीचे एपीआई स्तरों में छवियों को घूर्णन करने के लिए, यह पोस्ट देखें।





android-imageview