A. 怎麼樣有滑動效果 android
android的滑動效果是通過View容器類ViewFlipper來實現的。
ViewFilpper是Android官方提供的一個View容器類,繼承於ViewAnimator類,用於實現頁面切換,也可以設定時間間隔,讓它自動播放。
又ViewAnimator繼承至於FrameLayout的,所以ViewFilpper的Layout裡面可以放置多個View,繼承關系如下:
1、activity的寫法如下:
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.GestureDetector;
importandroid.view.MotionEvent;
importandroid.view.ViewGroup.LayoutParams;
importandroid.view.animation.Animation;
importandroid.view.animation.AnimationUtils;
importandroid.widget.ImageView;
importandroid.widget.ViewFlipper;
.view.GestureDetector.OnGestureListener{
privateint[]imgs={R.drawable.img1,R.drawable.img2,
R.drawable.img3,R.drawable.img4,R.drawable.img5};
=null;
privateViewFlipperviewFlipper=null;
privateActivitymActivity=null;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mActivity=this;
viewFlipper=(ViewFlipper)findViewById(R.id.viewflipper);
gestureDetector=newGestureDetector(this);//聲明檢測手勢事件
for(inti=0;i<imgs.length;i++){//添加圖片源
ImageViewiv=newImageView(this);
iv.setImageResource(imgs[i]);
iv.setScaleType(ImageView.ScaleType.FIT_XY);
viewFlipper.addView(iv,newLayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
}
viewFlipper.setAutoStart(true);//設置自動播放功能(點擊事件,前自動播放)
viewFlipper.setFlipInterval(3000);
if(viewFlipper.isAutoStart()&&!viewFlipper.isFlipping()){
viewFlipper.startFlipping();
}
}
@Override
publicbooleanonTouchEvent(MotionEventevent){
viewFlipper.stopFlipping();//點擊事件後,停止自動播放
viewFlipper.setAutoStart(false);
returngestureDetector.onTouchEvent(event);//注冊手勢事件
}
@Override
publicbooleanonFling(MotionEvente1,MotionEvente2,floatvelocityX,floatvelocityY){
if(e2.getX()-e1.getX()>120){//從左向右滑動(左進右出)
AnimationrInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_in);//向右滑動左側進入的漸變效果(alpha0.1->1.0)
AnimationrOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_right_out);//向右滑動右側滑出的漸變效果(alpha1.0->0.1)
viewFlipper.setInAnimation(rInAnim);
viewFlipper.setOutAnimation(rOutAnim);
viewFlipper.showPrevious();
returntrue;
}elseif(e2.getX()-e1.getX()<-120){//從右向左滑動(右進左出)
AnimationlInAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_in);//向左滑動左側進入的漸變效果(alpha0.1->1.0)
AnimationlOutAnim=AnimationUtils.loadAnimation(mActivity,R.anim.push_left_out);//向左滑動右側滑出的漸變效果(alpha1.0->0.1)
viewFlipper.setInAnimation(lInAnim);
viewFlipper.setOutAnimation(lOutAnim);
viewFlipper.showNext();
returntrue;
}
returntrue;
}
@Override
publicbooleanonDown(MotionEvente){
returnfalse;
}
@Override
publicvoidonLongPress(MotionEvente){
}
@Override
publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){
returnfalse;
}
@Override
publicvoidonShowPress(MotionEvente){
}
@Override
publicbooleanonSingleTapUp(MotionEvente){
returnfalse;
}
}
2、main.xml配置文件:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ViewFlipper
android:id="@+id/viewflipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
以上完成了手勢滑屏:
手勢滑動屏幕動畫,是通過android.view.GestureDetector類檢測各種手勢事件實現的,該類有兩個回調介面(Interface)
A、GestureDetector.OnDoubleTapListener,用來通知DoubleTap雙擊事件,類似於滑鼠的雙擊事件,介面三個抽象回調函數如下
1、onDoubleTap(MotionEvent e):DoubleTap雙擊手勢事件後通知(觸發)
2、onDoubleTapEvent(MotionEvent e):DoubleTap雙擊手勢事件之間通知(觸發),包含down、up和move事件(這里指的是在雙擊之間發生的事件,例如在同一個地方雙擊會產生DoubleTap手勢,而在DoubleTap手勢裡面還會發生down和up事件,這兩個事件由該函數通知)
3、onSingleTapConfirmed(MotionEvent e):用來判定該次點擊是SingleTap而不是DoubleTap,如果連續點擊兩次就是DoubleTap手勢;那麼如果只點擊一次,系統等待一段時間後沒有收到第二次點擊則判定該次點擊為SingleTap而不是DoubleTap,此時觸發的就是SingleTapConfirmed事件
B. web app 頁面切換特效怎樣實現
使用jQuery Mobile開發Web App-頁面切換動畫 android
jQuery Mobile包含一組基於CSS3的過渡動畫(又稱轉場效果),可以應用在任何頁面或page組件切換。jQuery Mobile默認對頁面切換和返回按鈕設置了滑動(slide)效果。
要設定一個特定過渡效果,只需要在鏈接上添加一個data-transition屬性,可以使用以下屬性值:
<a data-transition="pop">I'll pop</a>
jQuery Mobile提供了6種切換動畫:slide(滑動)、slideup(向上滑動)、slidedown(向下滑動)、pop(拋出)、fade(淡入淡出)和flip(3D翻轉)。動畫效果見這里。
注意:flip效果在大多數android瀏覽器上不能被正確渲染,因為缺少對3d css transform的支持。不幸的是android並沒有忽略flip效果,而是使用水平翻轉來替代。所以建議在android完美支持之前謹慎使用flip效果。
此外,你可以使用data-direction=」reverse」來設定反向的過渡效果,比如對slide效果(從右往左)使用data-direction=」reverse」則會變成從左往右,對pop效果(從小到大拋出)使用data-direction=」reverse」則會變成從大到小消失。
今天老總跟我們聊天,說了很多技術的東西,有很多關於線程和內存的內容,憑我現在的水平,不理解其說的內容,以後要在這方面多加註意些,注重性能優化。
在軟體行業,要實時跟上軟體發展的進程。老總有個比喻,是這樣的。菜市場每天都有很多新鮮的菜進入,如果你抱著一捆不新鮮的菜來買,即使你人緣再好,老主顧也會離你而去,更別說其他。
C. 安卓類似微信菜單切換
在安卓開發中,要實現類似微信菜單切換的效果,可以採取以下幾種方法:
ViewPager:
TabHost與TabWidget結合RadioButton:
Fragment與ViewPager結合:
自定義View實現:
總結: 如果追求簡單和流暢性,且目標用戶群體使用的是高版本Android系統,可以選擇ViewPager。 如果需要兼容低版本Android系統,且不介意實現相對復雜一些,可以選擇TabHost與TabWidget結合RadioButton,並手動添加動畫效果。 如果希望實現更復雜的頁面切換和動態內容載入,可以考慮Fragment與ViewPager結合的方式。 如果上述方法都無法滿足需求,可以考慮自定義View來實現完全自定義的切換效果。
D. 如何在Android開發中實現屏幕切換
屏幕切換指的是在同一個Activity內屏幕間的切換,最長見的情況就是在一個FrameLayout內有多個頁面,比如一個系統設置頁面;一個個性化設置頁面。android.widget.ViewAnimator類繼承至FrameLayout,ViewAnimator類的作用是為FrameLayout裡面的View切換提供動畫效果。
該類有如下幾個和動畫相關的函數:
setInAnimation:設置View進入屏幕時候使用的動畫,該函數有兩個版本,一個接受單個參數,類型為 android.view.animation.Animation,一個接受兩個參數,類型為Context和int,分別為Context對象和定義 Animation的resourceID。
setOutAnimation: 設置View退出屏幕時候使用的動畫,參數setInAnimation函數一樣。
showNext: 調用該函數來顯示FrameLayout裡面的下一個View。
多數情況下是使用ViewFlipper 是繼承至FrameLayout的,所以它是一個Layout裡面可以放置多個View。ViewFlipper可以用來指定FrameLayout內多 個View之間的切換效果,可以一次指定也可以每次切換的時候都指定單獨的效果。
isFlipping:用來判斷View切換是否正在進行
setFilpInterval:設置View之間切換的時間間隔
startFlipping:使用上面設置的時間間隔來開始切換所有的View,切換會循環進行
stopFlipping: 停止View切換
E. Android技術分享| Activity 過渡動畫 — 讓切換更加炫酷
在 Android5.0 以上的版本中,Google 為我們提供了一系列的過渡動畫功能,以使活動間的切換更加美觀自然。這些動畫效果相較於之前的 Android 版本有了顯著的改進,可以顯著提升用戶體驗。
以下是Android5.x 提供的幾種過渡動畫效果:爆炸(explode)、滑動(slide)和淡入淡出(fade)。爆炸動畫是從屏幕中間進或出,然後將視圖移動至最終位置。滑動動畫是從屏幕邊緣進或出,通過移動視圖形成動畫效果。淡入淡出動畫則是通過改變視圖的透明度來實現動畫效果。
要使用這些動畫效果,只需在啟動一個活動時,通過`startActivity()`方法傳遞需要的參數即可。例如,從MainActivity啟動AnimationActivity時,需要在代碼中添加相應的參數。
共享元素動畫效果可以在兩個具有相同內容的視圖之間實現更佳的用戶體驗。為此,需要為這些共享元素設置特定的屬性,並在啟動活動時進行配置。
以下是具體實現步驟:首先,為兩個頁面中的共同元素(如文本視圖)設置`transitionName`屬性,並確保這些名稱一致。然後,在啟動活動時添加相應的參數以實現共享元素動畫效果。
為了使活動間的過渡更加炫酷,可以合理運用這些過渡動畫,但注意不要過度使用,以免影響用戶體驗。通過上述示例和代碼,可以實現基本的活動過渡動畫效果。
F. Android activity切換時怎麼實現類似ios的翻頁效果
通常情況下是用ViewPager+Fragment來實現滑屏的效果。
1.Fragment是android3.0引入的新控制項,果應用使用在3.0以下、1.6及以上的版本,需要引入v4包。
2.Fragment支持在不同的Activity中使用並且可以處理自己的輸入事件以及生命周期方法等。
3.Fragment的生命周期方法依賴於Activity的生命周期,例如一個Activity的onPause()的生命周期方法被調用的時候這個Activity中的所有的Fragment的onPause()方法也將被調用。
4.FragmentManager提供了對Activity運行時的Fragment的添加、刪除、替換的操作。在Activity運行期間可以添加Fragment而不是在XML布局文件中進行定義。如果打算在Activity中改變Fragment的生命過程。如果要執行添加、刪除、修改的操作,必須通過FragmentManager的對象獲得一個FragmentTransaction對象,通過它的API來執行這些操作。
5.兩個單獨的Fragment之間是不應該進行通信的。應該使用他們所存在的Activity作為溝通的紐帶。
G. Android使用ViewPager2實現頁面滑動切換
在設計應用界面時,經常需要實現頁面間的滑動切換功能。Android開發中,ViewPager2作為升級版的解決方案,提供了簡潔高效的方式實現這一需求。本文將詳細介紹如何利用ViewPager2、FragmentStateAdapter與Fragment來實現頁面滑動切換。
首先,引入ViewPager2庫是實現該功能的基礎。通過在項目中添加以下代碼進行引入:
java
dependencies {
implementation 'androidx.viewpager2:viewpager2:1.0.0'
}
接著,在布局文件中使用``組件來構建頁面滑動容器:
xml
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
為了演示,我們創建一個簡單的Fragment組件。其布局設計如下:
xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Content"/>
接下來,創建`ContentFragment`類並實現其邏輯,包括對布局的引用和內容顯示。
java
public class ContentFragment extends Fragment {
TextView textView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_content, container, false);
textView = view.findViewById(R.id.text_view);
return view;
}
}
為了適配不同頁面的管理,需要創建自定義的`ContentPagerAdapter`類,繼承`FragmentStateAdapter`並實現`createFragment(int position)`與`getItemCount()`方法。
java
public class ContentPagerAdapter extends FragmentStateAdapter {
private ArrayList fragments;
public ContentPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle) {
super(fragmentManager, lifecycle);
this.fragments = new ArrayList>();
}
@NonNull
@Override
public Fragment createFragment(int position) {
// 實例化Fragment
Fragment fragment = null;
// 添加或替換Fragment
return fragment;
}
@Override
public int getItemCount() {
return fragments.size();
}
}
將`ContentPagerAdapter`與`ViewPager2`進行綁定,完成頁面滑動切換的實現:
java
ViewPager2 viewPager = view.findViewById(R.id.viewpager);
ContentPagerAdapter adapter = new ContentPagerAdapter(getChildFragmentManager(), getLifecycle());
viewPager.setAdapter(adapter);
若需實現垂直方向的滑動切換,可簡單地在布局文件中添加`android:orientation="vertical"`屬性,或在代碼中調用`setOrientation(ViewPager2.ORIENTATION_VERTICAL)`方法。
當頁面集合發生變化,需要更新時,可以方便地使用`ContentPagerAdapter`來更新數據。由於ViewPager2基於RecyclerView實現,可以調用`notifyItemChanged(int position)`、`notifyItemInserted(int position)`等方法進行更新。
通過使用ViewPager2、FragmentStateAdapter與Fragment,開發者可以輕松實現界面中的頁面滑動切換功能。這一組件不僅支持水平方向的滑動,還能通過簡單的設置實現垂直方向的滑動,為應用界面設計提供了更多的靈活性與可能性。