package com.mj.testwindow;


import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;


public class MainActivity extends Activity {


private WindowManager mWindowManager = null;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);


// setContentView();


mWindowManager = (WindowManager) getApplicationContext()
.getSystemService("window");


addWin();
}


private WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams();


private View mView = null;


// 使用WindowManager.addView()直接添加view到WindowManager
void addWin() {


mView = InitView();


mLayoutParams.type = LayoutParams.TYPE_PHONE; // 设置window
// type
mLayoutParams.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明


mLayoutParams.flags = LayoutParams.FLAG_ALT_FOCUSABLE_IM
| LayoutParams.FLAG_NOT_FOCUSABLE;


mLayoutParams.gravity = Gravity.TOP | Gravity.LEFT;


mLayoutParams.x = 0;
mLayoutParams.y = 0;


// mLayoutParams.height = 100;
// mLayoutParams.width = 150;


mLayoutParams.height = LayoutParams.WRAP_CONTENT;
mLayoutParams.width = LayoutParams.WRAP_CONTENT;


mWindowManager.addView(mView, mLayoutParams);
}


int left_arrow_id = 0x123654;
int right_arrow_id = left_arrow_id + 100;


TextView mTv_right = null;
TextView mTv_left = null;


int ARROW_WIDTH = 40;


// 不使用布局文件,自定义界面
private View InitView() {
// FrameLayout group = new FrameLayout(this);
FrameLayout flyt = new FrameLayout(this);
RelativeLayout layout = new RelativeLayout(this);
mTv_left = new TextView(this);
mTv_left.setText("<");
mTv_left.setId(left_arrow_id);
mTv_left.setGravity(Gravity.CENTER);
mTv_left.setOnClickListener(mListener);


mTv_right = new TextView(this);
mTv_right.setText(">");
mTv_right.setId(right_arrow_id);
mTv_right.setGravity(Gravity.CENTER);
mTv_right.setVisibility(View.GONE);
mTv_right.setOnClickListener(mListener);


RelativeLayout.LayoutParams p1 = new RelativeLayout.LayoutParams(ARROW_WIDTH,
FrameLayout.LayoutParams.MATCH_PARENT);
p1.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
layout.addView(mTv_left, p1);


RelativeLayout.LayoutParams p2 = new RelativeLayout.LayoutParams(ARROW_WIDTH,
FrameLayout.LayoutParams.MATCH_PARENT);
p2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layout.addView(mTv_right, p2);


ImageView img = new ImageView(this);
img.setBackgroundResource(R.drawable.background);
RelativeLayout.LayoutParams p3 = new RelativeLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
p3.addRule(RelativeLayout.LEFT_OF, right_arrow_id);
p3.addRule(RelativeLayout.RIGHT_OF, left_arrow_id);
layout.addView(img, p3);


img.setOnLongClickListener(new View.OnLongClickListener() {


@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
mWindowManager.removeView(mView);


return false;
}
});


FrameLayout.LayoutParams p4 = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
flyt.addView(layout, p4);


return flyt;
}


private View.OnClickListener mListener = new View.OnClickListener() {


@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == left_arrow_id) {
mTv_right.setVisibility(View.VISIBLE);
mTv_left.setVisibility(View.GONE);
} else if (v.getId() == right_arrow_id) {
mTv_right.setVisibility(View.GONE);
mTv_left.setVisibility(View.VISIBLE);
}
}
};


}

更多相关文章

  1. android的线性布局
  2. Android-AbsoluteLayout(绝对布局)
  3. Android 布局 & 一些控件
  4. Android五个布局
  5. android开发中常用的五大布局
  6. android的布局文件简介
  7. Android中的布局
  8. Android 布局 LinearLayout与RelativeLayout的布局属性

随机推荐

  1. 解决VS2015安装Android(安卓)SDK 后文件
  2. Android开发指南-用户界面-创建菜单
  3. android > 反编译
  4. Android中View转换为Bitmap及getDrawingC
  5. 用旧弃的Android智能手机变为电脑WIFI摄
  6. Android自学笔记:Android2.3源码下载(针对W
  7. Handler解析(一):是如何实现线程之间的切
  8. 索尼发布PlayStation Suite SDK
  9. android 对话框之——带单选列表、带多选
  10. Android序列化的存储和读取