標籤:fill parent vertica icon 登入 linear 自訂分享 roi draw
第一種情況
首先上傳一張預設的友盟分享的
看起來還不錯,但是總是有這樣那樣的原因,需要我們對預設效果做出一些改變。
第二種情況
如果你想做出下面的效果:
或者這樣的效果 :
總之上面的效果總是在預設的基礎上(及原有的控制項基礎上做出改變,改變顏色,背景,背景顏色等等一些基本的改變),
如果你真的遇到了這樣的需求很簡單:你可以直接登入友盟的開發文檔中有十分詳細的介紹,很簡單的
下面是一些:
好,結束。
你可以直接進去看。
第三章情況
有了前兩種情況,如果還沒有滿足你的需求,那麼咱們今天的重點來了。你想要完全自訂。
例如我們項目需要達到下面的效果
我看了友盟開發文檔,可以改變上面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君與你共勉。有需要完整代碼的請留言。
android 整合友盟分享之後,想自訂分享面板的看過來