android 點選 頭像對應的 底部彈出框拍照,相簿取消 簡單實現
阿新 • • 發佈:2019-01-06
標準 看完這個帖子一定看看這個, 兩個結合 , 實現 拍照 相簿 回撥
主頁面佈局 這裡對應的就是一個點選事件 實現 ,
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/gray" tools:context="com.lbb.rosewood.mine.view.activity.CameraActivity"> <Button android:id="@+id/dianji" android:text="測試" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
第二步對應 在建立 底部彈出框的佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:background="@color/gray" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/camera" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="@dimen/margin15" android:text="拍照" android:textColor="@color/bottom_blue" android:textSize="@dimen/textsize20" tools:ignore="HardcodedText,RtlHardcoded" /> <View android:layout_width="match_parent" android:layout_height="@dimen/line_1" android:background="@color/error_bg" /> <TextView android:id="@+id/pic" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="@dimen/margin15" android:text="相簿" android:textColor="@color/bottom_blue" android:textSize="@dimen/textsize20" tools:ignore="HardcodedText,RtlHardcoded" /> <View android:layout_width="match_parent" android:layout_height="@dimen/line_1" android:background="@color/error_bg" /> <TextView android:id="@+id/cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dialog_bottom_bg" android:gravity="center" android:padding="@dimen/margin15" android:text="取消" android:textColor="@color/bottom_blue" android:textSize="@dimen/textsize20" tools:ignore="HardcodedText,RtlHardcoded" /> </LinearLayout>
第三步 主程式碼
public class CameraActivity extends AppCompatActivity implements View.OnClickListener{ private View inflate; private TextView camera; private TextView pic; private TextView cancel; private Dialog dialog; Button dianji; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); dianji = (Button)findViewById(R.id.dianji); dianji.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { show(view); } }); } public void show(View view){ dialog = new Dialog(this,R.style.DialogTheme); //填充對話方塊的佈局 inflate = LayoutInflater.from(this).inflate(R.layout.ceshi, null); //初始化控制元件 camera = (TextView) inflate.findViewById(R.id.camera); pic = (TextView) inflate.findViewById(R.id.pic); cancel = (TextView) inflate.findViewById(R.id.cancel); camera.setOnClickListener(this); pic.setOnClickListener(this); cancel.setOnClickListener(this); //將佈局設定給Dialog dialog.setContentView(inflate); //獲取當前Activity所在的窗體 Window dialogWindow = dialog.getWindow(); //設定Dialog從窗體底部彈出 dialogWindow.setGravity( Gravity.BOTTOM); //獲得窗體的屬性 WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.y = 20;//設定Dialog距離底部的距離 // 將屬性設定給窗體 dialogWindow.setAttributes(lp); dialog.show();//顯示對話方塊 } @Override public void onClick(View view) { switch (view.getId()){ case R.id.camera: Toast.makeText(this,"點選了拍照",Toast.LENGTH_SHORT).show(); break; case R.id.pic: Toast.makeText(this,"點選了從相簿選擇",Toast.LENGTH_SHORT).show(); break; case R.id.cancel: dialog.dismiss(); break; } } }
對應的style 裡面彈出框的樣式
<style name="DialogTheme" parent="@android:style/Theme.Dialog">
<!-- 邊框 -->
<item name="android:windowFrame">@null</item>
<!-- 是否浮現在activity之上 -->
<item name="android:windowIsFloating">true</item>
<!-- 半透明 -->
<item name="android:windowIsTranslucent">true</item>
<!-- 無標題 -->
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<!-- 背景透明 -->
<item name="android:windowBackground">@android:color/transparent</item>
<!-- 模糊 -->
<item name="android:backgroundDimEnabled">true</item>
<!-- 遮罩層 -->
<item name="android:backgroundDimAmount">0.5</item>
</style>