新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、简单自定义控件MyButton每一个控件都是一个java类,有对应的代码,只要你能正确的编写java代码,那么电脑培训发现可以创造出符合你需求的控件,即自定义控件。
永胜网站建设公司创新互联建站,永胜网站设计制作,有大型网站制作公司丰富经验。已为永胜近千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的永胜做网站的公司定做!
1.通过继承的方式,创建自定义控件通过继承一个现有的控件,覆盖其界面的呈现 通过继承一个包含若干子控件的布局通过继承一个现有的控件,覆盖某个响应事件 继承一个View来完整自定义一个心控件 2.使你的自定义控件继承自某个最接近的Android控件,必须是public 一般都会调用父类的构造方法,注意一般有三个构造方法覆盖原来控件的方法,注意是否要再调用super中的方法在XML中以类全名的方式引用此控件二、复杂自定义控件MyLogin需要设计包含一组控件的自定义控件就需要用到复杂的自定义控件1) 使得你的自定义控件继承自某个接近的布局2) 正确的实现构造方法:构造方法中实例化目标布局,同时查找到各个子布局3) 添加相应的响应代码来修改属性,使得外部能访问布局中的子控件4) 在XML中以类全名的方式引用此控件,完整的包名+类名。
给你写个最简单的吧,其实和XML布局是一样的。都是在LinearLayout、RelativeLayout这些布局中加控件,不同的是java代码都是new 出来的对象。例子:
LinearLayout layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setPadding(0, 0, 0, 0);
layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
Button btn = new Button(context);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 0);
btn.setLayoutParams(params);
layout.addView(btn);
你可以直接新建一个类,这个类实现你所要监听的事件接口,监听的时候直接实例化这个类当作参数传到绑定事件的方法内就可以了
窗口类:
public class TestWindow extends javax.swing.JFrame {
public TestWindow() {
initComponents();
}
private void initComponents() {
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("OK");
//绑定事件
jButton1.addActionListener(new ActionListenerButton());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup().addGap(87, 87, 87)
.addComponent(jButton1)
.addContainerGap(262, Short.MAX_VALUE)));
layout.setVerticalGroup(layout.createParallelGroup(
javax.swing.GroupLayout.Alignment.LEADING).addGroup(
layout.createSequentialGroup()
.addGap(83, 83, 83)
.addComponent(jButton1,
javax.swing.GroupLayout.PREFERRED_SIZE, 39,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(178, Short.MAX_VALUE)));
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestWindow().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
}
监听实现类:
public class ActionListenerButton implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hello world");
}
}
在Android的开发过程中、遇到一个新需求、那就是让Java代码和Javascript代码进行交互、在IOS中实现起来很麻烦、而在Android中相对来说容易、Android对这种交互进行很好的封装、其实可以很简单的用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码
一、网页的JS代码调用ANDROID中JAVA代码的方法
在网页中调用java代码、需要在webview控件中添加javascriptInterface
contentWebView = (WebView) findViewById(R.id.webview);
//启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js对象名");
在Activity中定义一个要被js调用的方法、src为js传递过来的参数、如果没有不传也可以的。
public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里对Android应用的UI进行处理
}
});
}
在网页中、只需要像调用js方法一样、进行调用就可以
a onClick="window.js对象名.jsFunction(´hello world´)"
点击调用java代码并传递参数
/a
二、ANDROID中JAVA代码调用网页的JS代码的方法
Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样
// 无参数调用
contentWebView.loadUrl("javascript:javacalljs()");
// 传递参数调用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");
三、JAVA和JS交互注意事项
1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法
2、Java 调用 js 的函数、没有返回值、调用就控制不到
3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间
4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验
你设置他的layoutprames就可以了
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0,0,0,0);//这里动态设置他的数值就行了,你说滚动设置,你在滚动监听里设置就行了。
你的意思应该是要在java代码中动态创建控件吧,那可以这样做
Button btn1 = new Button(this);
btn1.setText(”this is a button”);
btn1.setId(1);//设置他的ID