چرخش متن و تغییر موقعیت تصویر در اندروید

سه شنبه 22 دی 1394

در این مقاله قصد داریم که متنی در صفحه چرخش نماید و تصویر آن عوض شود، و به یک activity دیگر برود و موقعیت خودش را تغییر دهد.

چرخش متن و تغییر موقعیت تصویر در اندروید

در این مقاله قصد داریم یک متن را rotate دهیم و تصاویر را هم عوض نماییم، و بعد از نمایش یک عکس از یک عکس به عکس دیگر برویم.

کد لایه ی activity به صورت زیر خواهد بود:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:paddingBottom="@dimen/activity_vertical_margin"

    tools:context=".MainActivity"

    android:background="#c79488">

  <TextView

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:text="@string/hello_world"

      android:id="@+id/txt"

      android:layout_marginTop="90dp"

      android:layout_marginLeft="90dp"

      android:textSize="@dimen/txtSize"/>

  <ImageView

          android:id="@+id/im"

          android:layout_width="80dp"

          android:layout_height="80dp"

          android:layout_marginTop="160dp"

          android:layout_marginLeft="10dp"

            />

</RelativeLayout>
import android.content.Context;

import android.content.Intent;

import android.os.Bundle;

import android.app.Activity;

import android.os.Handler;

import android.view.Menu;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.TextView;

 

public class MainActivity extends Activity {
    TextView txt;
    static int flag=0;
    private Handler mHandler;
    final Context context=this;
    ImageView im;
    RelativeLayout.LayoutParams par;

    private Runnable mCountUpdater = new Runnable() {

        private int mCount = 0; 

        @Override

        public void run() {

            if(mCount>5
            {

                Intent i=new Intent(context,Second.class);
                startActivity(i);
            }
            else
            {
               rotate();
                flag++;
                mCount++;
                mHandler.postDelayed(this, 900);
            }        }
    };

    public void rotate()

    {
        if(flag%2==0)

        {
            txt.setRotation(20);

            im.setImageResource(R.drawable.image1);
        }
        else
        {
            txt.setRotation(-20);
            im.setImageResource(R.drawable.image2);
           par = (RelativeLayout.LayoutParams)im.getLayoutParams();
            par.leftMargin += 60;
             im.setLayoutParams(par);
        }

    }

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        txt=(TextView)findViewById(R.id.txt);

        im=(ImageView)findViewById(R.id.im);

        mHandler = new Handler();

        mHandler.post(mCountUpdater);
    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }

}

برای چرخش متن شما نیاز به استفاده از تابع setRotation دارید، از یک layoutparams برای تغییر موقعیت تصویر مورد نظر استفاده نمایید، تصاویر مورد نظر را که باید نمایش داده شود را داخل پوشه ی drawable می گذارید.

قدم بعدی یک لایه activity دیگر بسازید و یک متن داخل آن قرار دهید که بعد از نمایش activity اول به این activity برود.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

              android:orientation="vertical"

              android:layout_width="match_parent"

              android:layout_height="match_parent"

              android:background="#454545">

  <TextView

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:textSize="50dp"

      android:textColor="#FFFFFF"

      android:text="BYEE"

      android:layout_marginLeft="30dp"

      android:layout_marginTop="190dp"

      android:id="@+id/txtsec"/>

</LinearLayout>

برای کلاس جاوا هم textview مورد نظر را تعریف کرده و از تابع setrotation استفاده نمایید.

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
public class Second extends Activity {
    TextView im;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.second_layout);

        im=(TextView)findViewById(R.id.txtsec);

        im.setRotation(20);

    }

}

داخل androidmanifest هم کلاس مورد نظر را تعریف نمایید.

<activity android:name=".Second"

                android:label="Second"/>

خروجی به صورت زیر خواهد بود:

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید