标签:
此功能的实现是利用了观察者模式(Listener)的写法,我对设计模式理解不深,就说说自己的想法吧。
首先是重写Dialog:
<!-- lang: java -->
public class SubmitDialog extends Dialog
{
public interface TrySubmitAgain //点击事件实现的核心接口,用于处理,传过来的事件
{
public void makeCallBack(); //此方法接参数可以处理传过来的数据
}
private Context context;
private TrySubmitAgain tsa;
private int flag; //标记用来判断是否执行makeCallBack方法
public SubmitDialog(Context context,TrySubmitAgain tsa,int flag)
{
super(context,R.style.HelpSubmitDialog); //调用Dialog的style背景
this.tsa = tsa;
this.context = context;
this.flag = flag
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//控制Dialog布局
setContentView(R.layout.submit_dialog);
dialogBg = (ImageView) findViewById(R.id.img_dialog);
btnDialog = (ImageButton) findViewById(R.id.btnDialog);
initLisener();
}
//重写show方法
public void show() {
super.show();
//控制Dialog的宽度和高度
WindowManager wm = ((Activity)context).getWindowManager();
Display display = wm.getDefaultDisplay();
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = (int) (display.getWidth()*0.5);
this.getWindow().setAttributes(lp);
}
public void initLisener()
{
btnDialog.setOnClickListener(
new OnClickListener(View v)
{
//根据flag比较产生不同的事件
if(flag==0)
{
SubmitDialog.this.dismiss();//成功则退出Dialog
}
else
{
SubmitDialog.dismiss();
tsa.makeCallBack();//其实本质还是执行的是Activity里的方法
}
}
);
}
}
OVER~
Activity以滑动退出,写法很简单,加一个滑入和滑出动画就可以了。
滑入R.anim.in写法:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%p" //初始位置
android:toXDelta="0" //到达位置
android:fromYDelta="0"
android:toYDelta="0" //Y轴不变化
>
滑出R.anim.out写法:
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:fromYDelta="0"
android:toYDelta="0" //Y轴不变化
>
在Activity切换的时候加上,
Intent intent = new Intent(this,TargetActivity.class);
startActivity(intent);
finish();
overridePendingTransaction(R.anim.in,R.anim.out);
PS:送一个安卓桌面坐标系的图
标签:
原文地址:http://my.oschina.net/lengwei/blog/383700