您的位置:首页 > 编程语言

不使用布局文件,代码中自定义界面

2012-12-26 17:40 351 查看
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);

}

}

};

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐