一、簡單自定義控件MyButton每一個控件都是一個java類,有對應的代碼,只要你能正確的編寫java代碼,那么電腦培訓發(fā)現(xiàn)可以創(chuàng)造出符合你需求的控件,即自定義控件。
永勝網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,永勝網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為永勝近千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的永勝做網(wǎng)站的公司定做!
1.通過繼承的方式,創(chuàng)建自定義控件通過繼承一個現(xiàn)有的控件,覆蓋其界面的呈現(xiàn)???通過繼承一個包含若干子控件的布局通過繼承一個現(xiàn)有的控件,覆蓋某個響應事件???繼承一個View來完整自定義一個心控件?2.使你的自定義控件繼承自某個最接近的Android控件,必須是public?一般都會調用父類的構造方法,注意一般有三個構造方法覆蓋原來控件的方法,注意是否要再調用super中的方法在XML中以類全名的方式引用此控件二、復雜自定義控件MyLogin需要設計包含一組控件的自定義控件就需要用到復雜的自定義控件1)???使得你的自定義控件繼承自某個接近的布局2)???正確的實現(xiàn)構造方法:構造方法中實例化目標布局,同時查找到各個子布局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);
你可以直接新建一個類,這個類實現(xiàn)你所要監(jiān)聽的事件接口,監(jiān)聽的時候直接實例化這個類當作參數(shù)傳到綁定事件的方法內(nèi)就可以了
窗口類:
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;
}
監(jiān)聽實現(xiàn)類:
public class ActionListenerButton implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "Hello world");
}
}
在Android的開發(fā)過程中、遇到一個新需求、那就是讓Java代碼和Javascript代碼進行交互、在IOS中實現(xiàn)起來很麻煩、而在Android中相對來說容易、Android對這種交互進行很好的封裝、其實可以很簡單的用Java代碼調用WebView中的js函數(shù)、也可以用WebView中的js來調用Android應用中的Java代碼
一、網(wǎng)頁的JS代碼調用ANDROID中JAVA代碼的方法
在網(wǎng)頁中調用java代碼、需要在webview控件中添加javascriptInterface
contentWebView = (WebView) findViewById(R.id.webview);
//啟用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js對象名");
在Activity中定義一個要被js調用的方法、src為js傳遞過來的參數(shù)、如果沒有不傳也可以的。
public void jsFunction(final String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里對Android應用的UI進行處理
}
});
}
在網(wǎng)頁中、只需要像調用js方法一樣、進行調用就可以
a onClick="window.js對象名.jsFunction(′hello world′)"
點擊調用java代碼并傳遞參數(shù)
/a
二、ANDROID中JAVA代碼調用網(wǎng)頁的JS代碼的方法
Java代碼調用js并傳參其實是通過WebView的loadUrl方法去調用的、只是參數(shù)url的寫法不一樣
// 無參數(shù)調用
contentWebView.loadUrl("javascript:javacalljs()");
// 傳遞參數(shù)調用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "′hello world′" + ")");
三、JAVA和JS交互注意事項
1、Java 調用 js 里面的函數(shù)、效率并不是很高、估計要200ms左右吧、做交互性很強的事情、這種速度很難讓人接受、而js去調Java的方法、速度很快、50ms左右、所以盡量用js調用Java方法
2、Java 調用 js 的函數(shù)、沒有返回值、調用就控制不到
3、Js 調用 Java 的方法、返回值如果是字符串、你會發(fā)現(xiàn)這個字符串是 native 的、轉成 locale 的才能正常使用、使用 toLocaleString() 函數(shù)就可以、不過這個函數(shù)的速度并不快、轉化的字符串如果很多、將會很耗費時間
4、網(wǎng)頁中盡量不要使用jQuery、執(zhí)行起來需要5-6秒、最好使用原生的js寫業(yè)務腳本、以提升加載速度、改善用戶體驗
你設置他的layoutprames就可以了
FrameLayout.LayoutParams?layoutParams?=?new?FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,?ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0,0,0,0);//這里動態(tài)設置他的數(shù)值就行了,你說滾動設置,你在滾動監(jiān)聽里設置就行了。
你的意思應該是要在java代碼中動態(tài)創(chuàng)建控件吧,那可以這樣做
Button btn1 = new Button(this);
btn1.setText(”this is a button”);
btn1.setId(1);//設置他的ID
網(wǎng)站標題:控件中支持java代碼 java中的控件
文章鏈接:http://muchs.cn/article0/hgegoo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、微信公眾號、網(wǎng)站排名、網(wǎng)站策劃、網(wǎng)站改版、網(wǎng)站維護
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)