آموزش نمایش همزمان دو اکتیویتی در یک صفحه
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش نمایش همزمان دو اکتیویتی در یک صفحه می پردازیم یعنی دو صفحه مختلف را در یک صفحه باز می کنیم در این حالت صفحه به دو قسمت تقسیم شده و هر اکتیویتی در بخشی از آن نمایش پیدا می کند این ویژگی از Android N به بعد پشتیبانی می شود اگر دقیق تر بخواهید بدانید از Api 24 به بعد این قابلیت قابل استفاده است پس هنگامی که می خواهید از این قابلیت استفاده کنید باید minSdkVersion شما برابر با 24 باشد یا از شرط گذاری api استفاده کنید تا در گوشی های دیگر با Api پایینتر به مشکل نخورید در ادامه با ما همراه باشید.
در ابتدای کار شما باید دو اکتیویتی ایجاد کنید
در layout اول یک دکمه قرار دهید و بهتر است در اکتیویتی دوم یک TextView قرار دهید تا از هم متمایز شوند پس همانند زیر عمل می کنیم.
پس کد مربوط به layout اول (activity_main.xml) همانند زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button" android:onClick="startNewActivity" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Start" tools:layout_editor_absoluteX="148dp" tools:layout_editor_absoluteY="297dp" /> </android.support.constraint.ConstraintLayout> |
دوستان در بالا از layout جدید گوگل به نام ConstraintLayout و چیز خاصی نیست در صورتی که با آن آشنایی ندارید واژه ConstraintLayout را در سایت جستجو کنید. در بالا ما برای دکمه خودمان از android:onClick برای باز کردن صفحه جدید استفاده کردیم همانطور که می بینید نام Onclick ما startNewActivity پس باید یک View با همین نام در MainActivity.java ایجاد کنیم.
پس کد مربوط به MainActivity.java همانند زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | package ir.programchi; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void startNewActivity(View view) { Intent i = new Intent(this, SecondActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); Rect rt = new Rect(0, 0, 100, 100) ActivityOptions actoptions = ActivityOptions.makeBasic(); ActivityOptions bounds = actoptions.setLaunchBounds(rt); startActivity(i); } } |
در بالا ما یک Intetn دیگر را باز کردیم فقط فرقی که این نوع Intent می کند داشتن یکسری flag یا پرچم هنگام باز کردن اکتیویتی است و از Rect برای تعیین اندازه اکتیویتی و گردی دور آن استفاده کردیم.
سپس کد مربوط به layout دوم ما همانند زیر می شود.
نام آن برابر با Activity_second.xml است.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" android:layout_gravity="center_horizontal" android:text="Second Activity Programchi.ir" /> </LinearLayout> |
و کد مربوط به بخش اکتیویتی آن به شکل زیر می باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package ir.programchi; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; /** * Created by Jefferson on 4/7/2017. */ public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); } } |
و قبل از اینکه برنامه را اجرا کنید وارد فایل AndroidManifest.xml شده در بخش اکتیویتی اصلی کد زیر را قرار دهید.
1 | android:resizeableActivity="true"> |
کل کد مربوط به AndroidManifest.xml به صورت زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.programchi"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:resizeableActivity="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"/> </application> </manifest> |
این آموزش هم به پایان رسید.
موفق و موید باشید.
اموزش هاتون واقعا عالیه
تنها مشکلش نداشتن تصویره
اگه تصویر داشت خیلی خوب می شد
خواهش می کنم به امید خدا عکس هم قرار میدهیم.
موفق باشید.