android 集成友盟分享之後,想自定義分享面板的看過來

第一種情況

首先上傳一張默認的友盟分享的效果圖

看起來還不錯,但是總是有這樣那樣的原因,需要我們對默認效果做出一些改變。

第二種情況

如果你想做出下面的效果:

或者這樣的效果 :

總之上面的效果總是在默認的基礎上(及原有的控件基礎上做出改變,改變顏色,背景,背景顏色等等一些基本的改變),
如果你真的遇到了這樣的需求很簡單:你可以直接登錄友盟的開發文檔中有十分詳細的介紹,很簡單的
下面是一些截圖:


好,截圖結束。
你可以直接進去看。

第三章情況

有了前兩種情況,如果還沒有滿足你的需求,那麼咱們今天的重點來了。你想要完全自定義。
例如我們項目需要達到下面的效果

我看了友盟開發文檔,可以改變上面Textview的顏色,但是我想給它後面加一張背景圖片,很顯然滿足不了我的需求,友盟沒有給我提供
方法和接口。怎麼辦呢?

下面用dialog自定義的方式實現

(1)定義view 的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical" >
  <RelativeLayout
      android:layout_width="match_parent"
      android:layout_height="@dimen/dip_80"
      android:background="@drawable/fxyl_tk_bg">
      <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:textColor="@color/whites"
          android:text="您的邀請碼:123456"
          android:layout_alignParentBottom="true"
          android:layout_marginBottom="@dimen/dip_8"
          android:layout_centerHorizontal="true"/>
  </RelativeLayout>
    <LinearLayout
        android:layout_marginTop="@dimen/dip_20"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RelativeLayout
            android:id="@+id/view_share_weixin"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ImageView
            android:id="@+id/share_icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:src="@drawable/wxx" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/share_icon"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="@dimen/dip_13"
                android:text="微信" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/view_share_weixinfriend"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ImageView
                android:id="@+id/share_icon2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:src="@drawable/pyqx" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/share_icon2"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="@dimen/dip_13"
                android:text="朋友圈" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/view_share_qq"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ImageView
                android:id="@+id/share_icon3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:src="@drawable/qqx" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/share_icon3"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="@dimen/dip_13"
                android:text="QQ" />
        </RelativeLayout>
        <RelativeLayout
            android:id="@+id/share_qqzone"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1" >

            <ImageView
                android:id="@+id/share_icon4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:src="@drawable/kjx" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/share_icon4"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="@dimen/dip_13"
                android:text="QQ空間" />
        </RelativeLayout>
    </LinearLayout>


    <TextView
        android:layout_marginTop="@dimen/dip_10"
        android:layout_marginBottom="@dimen/dip_10"
        android:id="@+id/share_cancel_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="取消" />

</LinearLayout>

(2)在dialog中inflater 自定義view

 private void showShareDialog() {
        View view = LayoutInflater.from(ACountryTour.this).inflate(R.layout.customshare_layout, null);
        // 設置style 控制默認dialog帶來的邊距問題
        final Dialog dialog = new Dialog(this, R.style.common_dialog);
        dialog.setContentView(view);
        dialog.show();

        // 監聽
        View.OnClickListener listener = new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                switch (v.getId()) {

                    case R.id.view_share_weixin:
                        // 分享到微信
                        share(SHARE_MEDIA.WEIXIN);
                        break;

                    case R.id.view_share_weixinfriend:
                        // 分享到朋友圈
                       share(SHARE_MEDIA.WEIXIN_CIRCLE);
                        break;
                    case R.id.view_share_qq:
                        // 分享到qq
                       share(SHARE_MEDIA.QQ);
                        break;

                    case R.id.share_qqzone:
                        // 分享到qq空間
                          share(SHARE_MEDIA.QZONE);
                        break;

                    case R.id.share_cancel_btn:
                        // 取消
                        break;

                }

                dialog.dismiss();
            }

        };
        ViewGroup mViewWeixin = (ViewGroup) view.findViewById(R.id.view_share_weixin);
        ViewGroup mViewPengyou = (ViewGroup) view.findViewById(R.id.view_share_weixinfriend);
        ViewGroup mViewqq= (ViewGroup) view.findViewById(R.id.view_share_qq);
        ViewGroup mViewqqzone = (ViewGroup) view.findViewById(R.id.share_qqzone);
        TextView mBtnCancel = (TextView) view.findViewById(R.id.share_cancel_btn);
        mViewWeixin.setOnClickListener(listener);
        mViewPengyou.setOnClickListener(listener);
        mViewqq.setOnClickListener(listener);
        mViewqqzone.setOnClickListener(listener);
        mBtnCancel.setOnClickListener(listener);

        // 設置相關位置,一定要在 show()之後
        Window window = dialog.getWindow();
        window.getDecorView().setPadding(0, 0, 0, 0);
        WindowManager.LayoutParams params = window.getAttributes();
        params.width = ViewGroup.LayoutParams.MATCH_PARENT;
        params.gravity = Gravity.BOTTOM;
        window.setAttributes(params);

    }

完美實現了效果

注意:

1.定義dialog的彈窗位置:

2.實現底部對齊充滿屏幕屬性後發現會有邊距,這時候需要重新定義dialog style,默認情況下的style中是帶有padiing的

<!-- 默認的style -->  

   <style name="common_dialog" parent="@android:style/Theme.Dialog">  
       <item name="android:windowBackground">@android:color/transparent</item>  
       <item name="android:windowNoTitle">true</item>  
   </style>  

謝謝你來過。android君與你共勉。有需要完整代碼的請留言。

發佈了21 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章