不使用布局文件,代码中自定义界面
16lz
2021-01-23
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);
}
}
};
}
更多相关文章
- android的线性布局
- Android-AbsoluteLayout(绝对布局)
- Android 布局 & 一些控件
- Android五个布局
- android开发中常用的五大布局
- android的布局文件简介
- Android中的布局
- Android 布局 LinearLayout与RelativeLayout的布局属性