آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کشیدن مانند نویگیشن دراور ( حل شد)

مرتضی مرادی  9 سال پیش  9 سال پیش
0 0

سلام من میخواستم یه linearlayout داشته باشم که در پایین صفحه باشه و مثل نویگیشن دیده نشه و زمانی که کاربر از پایین صفحه به سمت بالا تاچ کردن مثل نویگیشن این linearlayout به همون اندازه ای که داره ظاهر بشه

لطفا راهنمایی کنید چطوری باید اینکارو بکنم؟

+2 0
سلام . شما میتونید با animation و متد onTouchEvent این کارو انجام بدین خیلی راحت ! من اینو در یک پاسخ جواب یمدم البته یه تیکه اشو که دستتون بیاد و شما تکمیلش کنید . (9 سال پیش)
+1 0
از CoordinatorLayout در پیکیج Design استفاده کنید (9 سال پیش)
 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
sana ebadi  9 سال پیش
+1 0

 پاسخ صحیح

شما در لی اوت خودتون یک linearLayout قرار میدین : (میتونید هر چیز دیگه ای بذارین به جز این کامپوننت که یک linearlayout هست (چون ما میخوایم این لایه کشیده بشه به پایین و بالا))

activity_main:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="150dp"
android:background="@android:color/holo_blue_dark"
android:layout_alignParentBottom="true"
android:gravity="center"
android:id="@+id/linear_anim"> // به ایدی لایه دقت کنید که باهاش کار کنیم 

</LinearLayout>

 

  •  خب حالا نیاز به anim داریم که توش کد های بالا رفتن و پایین اومدن رو بنویسیم :

فایل anim_down.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate
android:fromYDelta="0%"
android:toXDelta="200%"
android:duration = "4000"/>
</set>

فایل anim_up.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate
android:duration="400"
android:fromXDelta="100%"
android:toYDelta="40%"
/>


</set>

  • خب حالا میریم سراغ MainActivity:

public class MainActivity extends AppCompatActivity {
private LinearLayout linear_anim;
private Animation anim_up , anim_down;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

linear_anim = (LinearLayout) findViewById(R.id.linear_anim);
linear_anim.setVisibility(View.GONE);

 anim_down = AnimationUtils.loadAnimation(this , R.anim.anim_down);
anim_up = AnimationUtils.loadAnimation(this , R.anim.anim_up);

  • متد onTouchEvent:

@Override
public boolean onTouchEvent(MotionEvent event) {


switch (event.getAction()){

case MotionEvent.ACTION_DOWN:
startY = event.getY();
break;

case MotionEvent.ACTION_UP:
endY = event.getY();
break;

}

if(startY > endY){

linear_anim.setVisibility(View.VISIBLE);
linear_anim.setAnimation(anim_up);

}else{

linear_anim.setAnimation(anim_down);
linear_anim.setVisibility(View.GONE);
}

return true;
}
}

 

 تمام شد !

حالا بیشتر خواستین یه سرچ بزنید هست (Popup layout مثلا (شناور ان یه جورایی)) !

موفق باشین :)

+1 0
خیلی ممنون و تشکر ، بنده راه های زیادی رو امتحان کردم و اخر سر بهترین راه رو پیدا کردم که همان استفاده از BottomSheet هست که امکانات بسیار خوب و عالی داره. (9 سال پیش)
0 0
خواهش میکنم .. بله ولی میشه بدون کتابخانه هم این کارو کرد. ولی هر جور راحت هستین . موفق باشین . :) (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .