真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),通遼網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:通遼等地區(qū)。通遼做網(wǎng)站價(jià)格咨詢:13518219792

先上個(gè)效果再說(shuō):

Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能

原理

Activity 本身是不可以滑動(dòng)的,但是我們可以制造一個(gè)正在滑動(dòng) Activity 的假象,使得看起來(lái)這個(gè) Activity 正在被手指滑動(dòng)。其原理其實(shí)很簡(jiǎn)單,我們滑動(dòng)的其實(shí)是 Activity 里面的可見(jiàn)View元素,而我們將 Activity 設(shè)置為透明的,這樣當(dāng) View 滑過(guò)的時(shí)候,由于 Activity 的底部是透明的,我們就可以在滑動(dòng)過(guò)程中看到下面的Activity,這樣看起來(lái)就是在滑動(dòng) Activity。所以 Activity 滑動(dòng)效果分兩步:

設(shè)置 Activity 透明
滑動(dòng) View

實(shí)現(xiàn)

1、設(shè)置透明:

資源文件 values -> styles.xml 添加如下代碼,搞一個(gè)透明的主題。


  @android:color/transparent
  true

然后在 AndroidManifest.xml 文件里面給相應(yīng)的 Activity 設(shè)置透明的主題。比如 MainActivity :


2、滑動(dòng)View:

先看看 Activity 的層次結(jié)構(gòu):我們用的 Activity 的 xml 的根 View 并不是 Activity 的根 View ,在它上面還有一個(gè)父 View, id 是 android.R.id.content,再向上一層,還有一個(gè)view,它是一個(gè) LinearLayout,它除了放置我們創(chuàng)建的 View 之外,還放置我們的 xml 之外的一些東西比如放 ActionBar 或者標(biāo)題欄什么的。而再往上一級(jí),就到了 Activity 的根 View —— DecorView,結(jié)構(gòu)

如下圖所示:

Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能

要做到像 iOS 那樣可以滑動(dòng)整個(gè) Activity ,只滑動(dòng)我們?cè)趚ml里面創(chuàng)建的 View 顯然是不對(duì)的,因?yàn)槲覀冞€有標(biāo)題欄、ActionBar 什么的,所以我們要滑動(dòng)的應(yīng)該是 DecorView 或者倒數(shù)第二層的那個(gè) View。

而要滑動(dòng) View的話,我們要重寫(xiě)其父窗口的 onInterceptTouchEvent 以及 onTouchEvent(當(dāng)然使用 setOnTouchListener 不是不可能,但是如果子 View 里面有一個(gè)消費(fèi)了 onTouch 事件,那么也就接收不到了),但是窗口的創(chuàng)建過(guò)程不是我們能控制的,DecorView 的創(chuàng)建都不是我們能干預(yù)的。

解決辦法就是,我們自己創(chuàng)建一個(gè) SwipeLayout,然后人為地插入頂層 View 中,放置在 DecorView 和其下面的 LinearLayout 中間,隨著手指的滑動(dòng),不斷改變 SwipeLayout 的子 View ——曾經(jīng)是 DecorView 的子 View——的位置,這樣我們就可以控制 Activity 的滑動(dòng)啦。我們?cè)?Activity 的 onPostCreate 方法中調(diào)用swipeLayout.replaceLayer 替換我們的 SwipeLayout,代碼如下:

public void replaceLayer(Activity activity) {

  mActivity = activity;
  screenWidth = getScreenWidth(activity);
  setClickable(true);
  //獲取 Activity 的 根 View
  ViewGroup root = (ViewGroup) activity.getWindow().getDecorView();
  //獲取 根 View 下面的第一個(gè) View,并保存到 content
  content = root.getChildAt(0);
  ViewGroup.LayoutParams params = content.getLayoutParams();
  ViewGroup.LayoutParams params2 = new ViewGroup.LayoutParams(-1, -1);
  //把根 View 下面原來(lái)的第一個(gè) View 刪除
  root.removeView(content);
  //把 content 添加到 SwipeLayout
  this.addView(content, params2);
  //再把 SwipeLayout 添加到根 View 里面
  root.addView(this, params);
  sideWidth = (int) (sideWidthInDP * activity.getResources().getDisplayMetrics().density);
}


然后把這些寫(xiě)成一個(gè) SwipeActivity 要求實(shí)現(xiàn)側(cè)滑返回的 Activity 繼承 SwipeActivity , SwipeActivity 繼承 FragmentActivity 或者 Activity 。比如 MainActivity:

public class SwipeActivity extends FragmentActivity {
  ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }
  ...
}
public class MainActivity extends SwipeActivity {
  ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  }
  ...
}
Android是什么

Android是一種基于Linux內(nèi)核的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國(guó)Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。

關(guān)于“Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


新聞名稱:Android仿iOS如何實(shí)現(xiàn)側(cè)滑返回功能-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://weahome.cn/article/dhhogg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部