小编为大家带来了《我的世界》手机版的一个技术教程,这次教大家如何制作JS的GUI,是不是有很多有想要制作JS的玩家不知道如何制作GUI,这里小编为大家带来了详细的教程,有兴趣的玩家都来看看吧。
要学gui,请不要问变量是啥
var ctx= com.mojang.minecraftpe.MainActivity.currentMainActivity.get()
获取一个主界面,必须的
ctx变量为一个主界面。
有主界面就可以进入线程了(线程是一个加快js运行并操控gui的必须)
ctx.runOnUiThread(newjava.lang.Runnable({run:function()
{
//线程内部
}}}));
然后就涉及到了显示gui的控件和布局
var ppw=newandroid.widget.PopupWindow();
//声明变量ppw为一个悬浮窗。可以理解为一个屏幕,可以显示东西
varlayout=newandroid.widget.RelativeLayout(ctx);
//声明变量layout为一个布局也就是一个排列东西的东西(默认为纵向)
如果i是一个按钮那么
i
i
i
如"图"三个按钮显示在布局里,这就是布局
有了以上资源我们认识一下像素以及他们的设置
不知哪位大大创造的自定义函数 像素
functiondip2px(ctx,dips){
return Math.ceil(dips*ctx.getResources().getDisplayMetrics().density);
}
dip2px(ctx,几像素 数字)
---------------------------------------------------------
dip2px(ctx,几像素 数字)调用方法
GUI就是刚才的悬浮窗ppw
GUI.setContentView()//设置GUI所展示的东西,()里填以后讲
GUI.setWidth();//宽
GUI.setHeight();//高
上两个应该填dip2px(ctx,几像素)
还有显示gui
GUI.showAtLocation(ctx.getWindow().getDecorView(),android.view.Gravity.左右|android.view.Gravity.上下,横偏移,纵偏移);
左右填LEFT是左 RIGHT是右,上下填TOP上或者BOTTOM下 大写
横偏移就是如果左右填左就是离左多少距离,填右就是…纵偏移以此类推
然后就进入我们的视图了
视图就是andriod安卓提供的控件比如按钮,文本,拖动条等等
先来按钮
varbutton=newandroid.widget.Button(ctx);
button.setText("X");
button.setOnClickListener(newandroid.view.View.OnClickListener({onClick:function(viewarg){
}}));
layout.addView(button);
别急我们来拆开分析
var空格button=new空android.widget.Button(ctx);
声明变量button是一个Button(按钮控件)
button.setText("x")
他的显示的文本是x
button.setOnClickListener(newandroid.view.View.OnClickListener({onClick:function(viewarg){
//点击按钮运行
}}));
layout.addView(button);
在layout上增加button控件
我们可以设置他
GUI.setContentView()//设置GUI所展示的
可以填button就是我们的按钮直接显示
也可以 GUI.setContentView(layout)
显示出布局都可以
正确例子
function dip2px(ctx,dips)
{
return Math.ceil(dips*ctx.getResources().getDisplayMetrics().density);
}
function newLevel(){
var ctx= com.mojang.minecraftpe.MainActivity.currentMainActivity.get()
ctx.runOnUiThread(new java.lang.Runnable({run:function()
{
try{
var simpleGUI=new android.widget.PopupWindow()
var layout=new android.widget.RelativeLayout(ctx);
var button=new android.widget.Button(ctx)
button.setText("X")
button.setOnClickListener(new android.view.View.OnClickListener({onClick:function(viewarg){
print("点击")
}}))
layout.addView(button)
simpleGUI.setContentView(layout)
simpleGUI.setWidth(70)
simpleGUI.setHeight(70)
simpleGUI.showAtLocation(ctx.getWindow().getDecorView(),android.view.Gravity.LEFT|android.view.Gravity.BOTTOM,0,0);
}
catch(err){print("Error:"+err)
}}}))
}
布局方向
layout.setOrientation(1)竖向
0为横向
GUI.setFocusable(true)是不是点击gui以外的地方gui消失
true是false不是
在例子中我们用了simpleGUI作为gui显示基础"屏幕",用layout显示了button按钮在simpleGUI上如此就成功了
而如何消除gui尼???就用到了GUI.dismiss。注意GUI是我们比喻的"屏幕"而不是按钮神马的
关于gui"屏幕"还有很多设置比如 GUI.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.argb(127,0,0,0)))设置背景颜色等等
回顾按钮
var空格button=new空android.widget.Button(ctx);
声明变量button是一个Button(按钮控件)
button.setText("x")
他的显示的文本是x
button.setOnClickListener(new android.view.View.OnClickListener({onClick:function(viewarg){
//点击按钮运行
}}));
button.setTextColor(android.graphics.Color.rgb(1,1,1))
设置字体颜色
button.setBackgroundColor(android.graphics.Color.argb(127,251,251,251));
背景颜色
注color.rgb(,,)是调色分别填red(红) green(绿) blue(蓝)颜色
color.argb(,,,)填透明,红,绿,蓝
color.argb()和color.rgb()每个空可以填0到255调色
var stitle=new android.widget.TextView(ctx)
//把stitle赋值为TextView文本视图
stitle.setTextColor(android.graphics.Color.rgb(255,255,255))
//字体颜色,好像不能设置背景色
stitle.setText("文本")//文本
stitle.setTextSize(13)//字体大小
layout.addView(stitle)
//布局上增加
var edit=new android.widget.EditText(ctx)//输入框
edit.setTextColor(android.graphics.Color.rgb(1,1,1))//字体颜色
edit.setHint("请输入数字")//提示
edit.setInputType(android.text.InputType.TYPE_CLASS_NUMBER)//类型为数字不加这个为文本
edit.setText("0")//设置字
layout.addView(edit)//显示
var check=new android.widget.CheckBox(ctx);
check.setTextColor(android.graphics.Color.YELLOW);
check.setText("疾跑模式");
check.setChecked();//显是是否打对号填true,false或者一个布尔值变量
check.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener(){
onCheckedChanged:function(v, isChecked){
//点击执行 isChecked是是否打对号布尔值 ,变量=isChecked可以作为这个的开关check.setChecked()里面填这个变量可以做到一个变量当开关
}});
layout.addView(check);
var ctx=com.mojang.minecraftpe.MainActivity.currentMainActivity.get()
var layout=new android.widget.LinearLayout(ctx)
try{
var menu=new android.widget.PopupWindow(layout, dip2px(ctx,75), dip2px(ctx,30));
menu.setFocusable(true)
var layout=new android.widget.LinearLayout(ctx)
layout.setOrientation(1)
var button=new android.widget.Button(ctx);
button.setText("确定");
button.setOnClickListener(new android.view.View.OnClickListener({
onClick:function(viewarg) {
}}));
layout.addView(button);
var mlayout=makeMenu(ctx,layout)
menu.setContentView(mlayout)
menu.setWidth(ctx.getWindowManager().getDefaultDisplay().getWidth()/3.3333333333);
menu.setHeight(ctx.getWindowManager().getDefaultDisplay().getHeight());
menu.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.argb(127,0,0,0)))
menu.showAtLocation(ctx.getWindow().getDecorView(),android.view.Gravity.RIGHT | android.view.Gravity.TOP,0,0);
}catch(err){
toast(err)
}
function makeMenu(ctx,layout){
var mlayout=new android.widget.RelativeLayout(ctx)
var svParams=new android.widget.RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.FILL_PARENT,android.widget.RelativeLayout.LayoutParams.FILL_PARENT)
var scrollview=new android.widget.ScrollView(ctx)
var pad=dip2px(ctx,2)
scrollview.setPadding(pad,pad,pad,pad)
scrollview.setLayoutParams(svParams)
scrollview.addView(layout)
mlayout.addView(scrollview)
return mlayout
}
菜单少了像素函数
先看这个
var ctx=com.mojang.minecraftpe.MainActivity.currentMainActivity.get()
var layout=new android.widget.LinearLayout(ctx)
try{
var menu=new android.widget.PopupWindow(layout, dip2px(ctx,75), dip2px(ctx,30));
menu.setFocusable(true)
var layout=new android.widget.LinearLayout(ctx)
layout.setOrientation(1)
var button=new android.widget.Button(ctx);
button.setText("确定");
button.setOnClickListener(new android.view.View.OnClickListener({
onClick:function(viewarg) {
}}));
layout.addView(button);
var mlayout=makeMenu(ctx,layout)
menu.setContentView(mlayout)
menu.setWidth(ctx.getWindowManager().getDefaultDisplay().getWidth()/3.3333333333);
menu.setHeight(ctx.getWindowManager().getDefaultDisplay().getHeight());
menu.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.argb(127,0,0,0)))
menu.showAtLocation(ctx.getWindow().getDecorView(),android.view.Gravity.RIGHT | android.view.Gravity.TOP,0,0);
}catch(err){
toast(err)
}
大家能看懂吧 先看这个
var menu=new android.widget.PopupWindow(layout, dip2px(ctx,75), dip2px(ctx,30));
这个是我们比喻的"屏幕"
function makeMenu(ctx,layout){
var mlayout=new android.widget.RelativeLayout(ctx)
var svParams=new android.widget.RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.FILL_PARENT,android.widget.RelativeLayout.LayoutParams.FILL_PARENT)
var scrollview=new android.widget.ScrollView(ctx)
var pad=dip2px(ctx,2)
scrollview.setPadding(pad,pad,pad,pad)
scrollview.setLayoutParams(svParams)
scrollview.addView(layout)
mlayout.addView(scrollview)
return mlayout
}
↑
哪位大大设置只要
设置好布局layout后
var 变量=makeMenu(ctx,layout/*布局变量*/)
变量就好像加工过一样变成菜单
然后显示这个变量就可以了
大家不熟悉这个时候还是
var ctx=com.mojang.minecraftpe.MainActivity.currentMainActivity.get()
var layout=new android.widget.LinearLayout(ctx)
try{
var menu=new android.widget.PopupWindow(layout, dip2px(ctx,75), dip2px(ctx,30));
menu.setFocusable(true)
var layout=new android.widget.LinearLayout(ctx)
layout.setOrientation(1)
var button=new android.widget.Button(ctx);
button.setText("确定");
button.setOnClickListener(new android.view.View.OnClickListener({
onClick:function(viewarg) {
}}));
layout.addView(button);
布局添加地
var mlayout=makeMenu(ctx,layout)
menu.setContentView(mlayout)
menu.setWidth(ctx.getWindowManager().getDefaultDisplay().getWidth()/3.3333333333);
menu.setHeight(ctx.getWindowManager().getDefaultDisplay().getHeight());
menu.setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.argb(127,0,0,0)))
menu.showAtLocation(ctx.getWindow().getDecorView(),android.view.Gravity.RIGHT | android.view.Gravity.TOP,0,0);
}catch(err){
toast(err)
}
function makeMenu(ctx,layout){
var mlayout=new android.widget.RelativeLayout(ctx)
var svParams=new android.widget.RelativeLayout.LayoutParams(android.widget.RelativeLayout.LayoutParams.FILL_PARENT,android.widget.RelativeLayout.LayoutParams.FILL_PARENT)
var scrollview=new android.widget.ScrollView(ctx)
var pad=dip2px(ctx,2)
scrollview.setPadding(pad,pad,pad,pad)
scrollview.setLayoutParams(svParams)
scrollview.addView(layout)
mlayout.addView(scrollview)
return mlayout
}
用这个比较好
我们只要把他放到自定义函数中
比如
var 菜单=function(){上面的菜单}
记得加上像素函数
就可以了
调用时 菜单() 就可以弹出菜单
var seekbar=new android.widget.SeekBar(ctx)//定义拖动条
seekbar.setMax(255)//拖动条长度
seekbar.setProgress(0)//显示时拖动到什么地方
//↓拖动时
seekbar.setOnSeekBarChangeListener(new android.widget.SeekBar.OnSeekBarChangeListener({
onProgressChanged:function(v){
seekbar.getProgress()//获取拖动位置
}}))
layout.addView(seekbar)//显示
还有选择框 var ll=new android.widget.Spinner(ctx)//定义
var k=new android.widget.ArrayAdapter(ctx,android.R.layout.preference_category,new java.lang.String("无,1").split(","))//适配器
ll.setOnItemSelectedListener(new android.widget.AdapterView.OnItemSelectedListener(){
onItemSelected:function(w){
ll.getSelectedItemId()//获取行数
}})
ll.setAdapter(k)//选择适配器
layout.addView(ll)//显示
对话框
var dialog=new android.app.AlertDialog.Builder(ctx)
dialog.setTitle("xx")//标题
dialog.setMessage("xx")//内容
dialog.setNegativeButton("按钮",new android.content.DialogInterface.OnClickListener(){
onClick: function(dia,w){
}})//增加一个按钮
dialog.show()
因为安卓控件都可以在layout布局上显示所以只要添加到布局就可以了
比如
var button=按钮控件
button.xxxx(xxx)设定完
layout.addView(button)
就显示了
然后用GUI"屏幕"显示它就可以了
控件.setVisibility(数字)
数字填0显示,填4不显示但占空间,填8完全不显示
bar=new android.widget.ProgressBar()
bar.setMax(最大)
bar.setProgress(进度)}
以上。
累计评论0条
展开其余评论