編輯:關於Android編程
在前面的博文中,小編簡單的介紹了如何制作圓角的按鈕以及圓角的圖片,伴著鍵盤和手指之間的舞步,迎來新的問題,不知道小伙伴有沒有這樣的經歷,以App為例,點擊頭像的時候,會從底部彈出一個窗口,有從相冊中選擇、拍照、取消的字樣,點擊相應的按鈕,完成相應的操作,在小編做項目的過程中遇到類似的問題,小編經過一番搗鼓,終於搞定了ing,今天這篇博文博文,小編簡單的介紹一下,如何點擊頭像,實現從底部彈出窗口的故事,這個故事實現的是彈出滑動窗口,主要是使用了一些設置Activity的樣式來實現彈出效果和滑動效果。
首先,第一步我們來編寫xml代碼,如下所示:
第二步,新建java類,命名為SelectPicPopupWindow,繼承Activity類並實現OnClickListener接口,這個接口可以不用實現,具體代碼如下所示:
package com.h8.imageroundcorner; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.Toast; public class SelectPicPopupWindow extends Activity implements OnClickListener{ private Button btn_take_photo, btn_pick_photo, btn_cancel; private LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.alert_dialog); btn_take_photo = (Button) this.findViewById(R.id.btn_take_photo); btn_pick_photo = (Button) this.findViewById(R.id.btn_pick_photo); btn_cancel = (Button) this.findViewById(R.id.btn_cancel); layout=(LinearLayout)findViewById(R.id.pop_layout); //添加選擇窗口范圍監聽可以優先獲取觸點,即不再執行onTouchEvent()函數,點擊其他地方時執行onTouchEvent()函數銷毀Activity layout.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), 提示:點擊窗口外部關閉窗口!, Toast.LENGTH_SHORT).show(); } }); //添加按鈕監聽 btn_cancel.setOnClickListener(this); btn_pick_photo.setOnClickListener(this); btn_take_photo.setOnClickListener(this); } //實現onTouchEvent觸屏函數但點擊屏幕時銷毀本Activity @Override public boolean onTouchEvent(MotionEvent event){ finish(); return true; } public void onClick(View v) { switch (v.getId()) { case R.id.btn_take_photo: break; case R.id.btn_pick_photo: break; case R.id.btn_cancel: break; default: break; } finish(); } }第三步,編寫MainActivity類,點擊頭像的時候,讓她從底部滑出一定彈出框,代碼如下所示:
package com.h8.imageroundcorner; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.TextView; public class TestActivity extends Activity { ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); imageView = (ImageView) findViewById(R.id.imageView2); Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.my); imageView.setImageBitmap(toRoundCorner(b,200)); //把文字控件添加監聽,點擊彈出自定義窗口 imageView.setOnClickListener(new OnClickListener() { public void onClick(View v) { startActivity(new Intent(TestActivity.this,SelectPicPopupWindow.class)); } }); } public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); final float roundPx = pixels; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } }第四步,設置屬性樣式實現我們所需要的效果,代碼如下所示:
第五步,在點擊頭像的時候,我們需要她是上下滑入式的效果,點擊取消的時候需要她是上下滑出式的效果,怎麼實現nie,具體代碼如下圖所示,首先是滑入式的效果:
接著,滑出式的效果代碼如下所示:
最後,我們來看一下運行的效果,如下圖所示:
小編寄語:該博文小編主要簡單的介紹了如何從底部滑出彈出框,希望可以幫助到需要的小伙伴們,每次實現一個簡單的效果,小編都會特別開心,伴著實習的腳步,小編慢慢長大`(*∩_∩*)′,這就是生命的意義,還是那句話對於小編來說,既是挑戰更是機遇,因為知識都是相通的,再者來說,在小編的程序人生中,留下最珍貴的記憶,雖然以後小編不一定從事安卓這個行業,代碼世界裡,很多種事,有的甜蜜,有的溫馨,有的婉轉成歌,有的綿延不息,在這些故事裡,我們唯一的共通之處就是,某年,某月,某個波瀾不驚的日子裡,曾經很愛很愛你!愛你--這段實習的日子裡,安卓帶給小編的種種的驚喜。
1.下面示例是一個簡單的定位,來自官網,對這些源碼加了一些注釋,這樣看起來可能會更容易理解一點。2.直接上源碼androidManifest.xml
前言:工欲善其事,必先利其器,工作一段時間後,對於以上十個字的感觸是最深的。剛參加工作的時候,並沒有對於要做的事情有著自己的理解,經常是上面分配了工作,自己就乖乖地跑去做
前面關於tween動畫寫了2篇博客,如果那2篇博客都看懂了,估計Tween動畫理解使用起來問題就不大,之前也說了Tween動畫的缺點就是在交互上有bug,今天就講下屬性動
本文將介紹Android中Resource Types的drawable、menu、layout。如需訪問官方原文,您可以點擊這些鏈接:《Drawable Resourc