- 浏览: 475345 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
bewithme:
我把一个透明背景的PNG画到了另外一张图片上,为啥透明背景就变 ...
Java绘制PNG图片时的黑色背景问题 -
davidwkj:
Y坐标的公式不对。算出来的值是错的!!!!!!!!!!!!!! ...
两条线段是否相交,计算交点公式。 -
zhang9181156:
茅塞顿开哈,感谢
android--相机开发 -
leecinwell:
哈
Android条用照相机,实现可剪切功能 -
life_菜鸟飞:
非常感谢作者这么详细的讲解,自己也动手实践了一下,发现前面几个 ...
android--相机开发
系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar,
- 博客分类:
- Android
系出名门Android(7) - 控件(View)之ZoomControls, Include, VideoView, WebView, RatingBar, Tab, Spinner, Chronometer, ScrollView
作者:webabcd
介绍
在 Android 中使用各种控件(View)
ZoomControls - 放大/缩小按钮控件
Include - 整合控件
VideoView - 视频播放控件
WebView - 浏览器控件
RatingBar - 评分控件
Tab - 选项卡控件
Spinner - 下拉框控件
Chronometer - 计时器控件
ScrollView - 滚动条控件
1、ZoomControls 的 Demo
zoomcontrols.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
放大/缩小按钮控件
-->
<ZoomControls android:id="@+id/zoomControls"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ZoomControls>
</LinearLayout>
_ZoomControls.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.widget.ZoomControls;
public class _ZoomControls extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.zoomcontrols);
setTitle("ZoomControls");
ZoomControls zoomControls = (ZoomControls) this.findViewById(R.id.zoomControls);
// setOnZoomInClickListener() - 响应单击放大按钮的事件
zoomControls.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(_ZoomControls.this, "单击了放大按钮", Toast.LENGTH_SHORT).show();
}
});
// setOnZoomOutClickListener() - 响应单击缩小按钮的事件
zoomControls.setOnZoomOutClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(_ZoomControls.this, "单击了缩小按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
2、Include 的 Demo
include.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
include - 整合控件,将指定的 layout 整合进来
layout - 指定需要整合 layout
-->
<include android:id="@+id/cell1" layout="@layout/include_1" />
<include android:id="@+id/cell2" android:layout_width="fill_parent" layout="@layout/include_2" />
</LinearLayout>
include_1.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:text="TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
include_2.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:text="TextView02" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
_Include.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
public class _Include extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.include);
setTitle("Include");
}
}
3、VideoView 的 Demo
videoview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
VideoView - 视频播放控件
-->
<VideoView android:id="@+id/videoView" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</VideoView>
</LinearLayout>
_VideoView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class _VideoView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.videoview);
setTitle("VideoView");
VideoView videoView = (VideoView) findViewById(R.id.videoView);
// 指定需要播放的视频的地址
videoView.setVideoURI(Uri.parse("android.resource://com.webabcd.view/" + R.raw.demo));
// videoView.setVideoPath();
// 设置播放器的控制条
videoView.setMediaController(new MediaController(this));
// 开始播放视频
videoView.start();
}
}
4、WebView 的 Demo
webview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
WebView - 浏览器控件(WebKit 内核)
-->
<WebView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/webView" />
</LinearLayout>
_WebView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class _WebView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.webview);
setTitle("WebView");
WebView webView = (WebView) findViewById(R.id.webView);
// 配置浏览器,使其可支持 JavaScript
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
// 清除浏览器缓存
webView.clearCache(true);
// 指定浏览器需要解析的 url 地址
webView.loadUrl("http://webabcd.cnblogs.com/");
// 指定浏览器需要解析的 html 数据
// webView.loadData("<a href='http://webabcd.cnblogs.com/'>webabcd</a>", "text/html", "utf-8");
}
}
5、RatingBar 的 Demo
ratingbar.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
RatingBar - 评分控件
numStars - 评分控件的星星的数量
rating - 当前评分的值
-->
<RatingBar android:id="@+id/ratingBar" android:numStars="5"
android:rating="1.5" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</RatingBar>
<TextView android:id="@+id/textView" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
_RatingBar.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;
public class _RatingBar extends Activity implements RatingBar.OnRatingBarChangeListener {
private RatingBar mRatingBar;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.ratingbar);
setTitle("RatingBar");
mTextView = (TextView) findViewById(R.id.textView);
mRatingBar = (RatingBar) findViewById(R.id.ratingBar);
// setOnRatingBarChangeListener() - 响应评分值发生改变的事件
mRatingBar.setOnRatingBarChangeListener(this);
}
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
mTextView.setText(String.valueOf(rating));
}
}
6、Tab 的 Demo
tab.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<!-- Tab 1 的内容 -->
<TextView android:id="@+id/view1" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="tab1 content" />
<!-- Tab 2 的内容 -->
<TextView android:id="@+id/view2" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="tab2 content" />
</FrameLayout>
_Tab.java
代码
package com.webabcd.view;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
// 实现 Tab 功能的话要继承 TabActivity
public class _Tab extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TabHost tabHost = getTabHost();
LayoutInflater.from(this).inflate(R.layout.tab, tabHost.getTabContentView(), true);
// Tab 1 的内容
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab1")
.setContent(R.id.view1));
// Tab 2 的内容(设置了 Tab 图片)
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab2", getResources().getDrawable(R.drawable.icon01))
.setContent(R.id.view2));
// Tab 3 的内容(设置 Tab 的内容为指定的 Activity)
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab3")
.setContent(new Intent(this, _TextView.class)));
}
}
7、Spinner 的 Demo
spinner.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/textView" />
<!--
Spinner - 下拉框控件
-->
<Spinner android:id="@+id/spinner" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
_Spinner.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class _Spinner extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.spinner);
setTitle("Spinner");
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// 设置下拉框控件的标题文本
spinner.setPrompt("请选择");
// 实例化适配器,指定显示格式及数据源
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.colors, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// setOnItemSelectedListener() - 响应下拉框的选中值发生变化的事件
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
TextView textView = (TextView)_Spinner.this.findViewById(R.id.textView);
textView.setText(((TextView)arg1).getText());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}
8、Chronometer 的 Demo
chronometer.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
Chronometer - 计时器控件
-->
<Chronometer android:id="@+id/chronometer"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/btnStart" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="开始计时">
<requestFocus />
</Button>
<Button android:id="@+id/btnStop" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="停止计时">
</Button>
<Button android:id="@+id/btnReset" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="计时器复位">
</Button>
</LinearLayout>
_Chronometer.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
public class _Chronometer extends Activity {
private Chronometer mChronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.chronometer);
setTitle("Chronometer");
Button button;
mChronometer = (Chronometer) findViewById(R.id.chronometer);
// 设置计时器所显示的时间格式
mChronometer.setFormat("计时:(%s)");
button = (Button) findViewById(R.id.btnStart);
button.setOnClickListener(mStartListener);
button = (Button) findViewById(R.id.btnStop);
button.setOnClickListener(mStopListener);
button = (Button) findViewById(R.id.btnReset);
button.setOnClickListener(mResetListener);
}
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
// 启动计时器
mChronometer.start();
}
};
View.OnClickListener mStopListener = new OnClickListener() {
public void onClick(View v) {
// 暂停计时器
mChronometer.stop();
}
};
View.OnClickListener mResetListener = new OnClickListener() {
public void onClick(View v) {
// 复位计时器,即停止计时器
mChronometer.setBase(SystemClock.elapsedRealtime());
}
};
}
9、ScrollView 的 Demo
scrollview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
ScrollView - 滚动条控件
scrollbarStyle - 滚动条的样式
-->
<ScrollView android:id="@+id/scrollView"
android:layout_width="fill_parent" android:layout_height="200px"
android:scrollbarStyle="outsideOverlay" android:background="@android:drawable/edit_text">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/textView" />
</ScrollView>
</LinearLayout>
_ScrollView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class _ScrollView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.scrollview);
setTitle("ScrollView");
TextView textView = (TextView)this.findViewById(R.id.textView);
textView.setText("a\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na");
}
}
作者:webabcd
介绍
在 Android 中使用各种控件(View)
ZoomControls - 放大/缩小按钮控件
Include - 整合控件
VideoView - 视频播放控件
WebView - 浏览器控件
RatingBar - 评分控件
Tab - 选项卡控件
Spinner - 下拉框控件
Chronometer - 计时器控件
ScrollView - 滚动条控件
1、ZoomControls 的 Demo
zoomcontrols.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
放大/缩小按钮控件
-->
<ZoomControls android:id="@+id/zoomControls"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ZoomControls>
</LinearLayout>
_ZoomControls.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.widget.ZoomControls;
public class _ZoomControls extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.zoomcontrols);
setTitle("ZoomControls");
ZoomControls zoomControls = (ZoomControls) this.findViewById(R.id.zoomControls);
// setOnZoomInClickListener() - 响应单击放大按钮的事件
zoomControls.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(_ZoomControls.this, "单击了放大按钮", Toast.LENGTH_SHORT).show();
}
});
// setOnZoomOutClickListener() - 响应单击缩小按钮的事件
zoomControls.setOnZoomOutClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(_ZoomControls.this, "单击了缩小按钮", Toast.LENGTH_SHORT).show();
}
});
}
}
2、Include 的 Demo
include.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
include - 整合控件,将指定的 layout 整合进来
layout - 指定需要整合 layout
-->
<include android:id="@+id/cell1" layout="@layout/include_1" />
<include android:id="@+id/cell2" android:layout_width="fill_parent" layout="@layout/include_2" />
</LinearLayout>
include_1.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:text="TextView01" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
include_2.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:text="TextView02" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
_Include.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
public class _Include extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.include);
setTitle("Include");
}
}
3、VideoView 的 Demo
videoview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
VideoView - 视频播放控件
-->
<VideoView android:id="@+id/videoView" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</VideoView>
</LinearLayout>
_VideoView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;
public class _VideoView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.videoview);
setTitle("VideoView");
VideoView videoView = (VideoView) findViewById(R.id.videoView);
// 指定需要播放的视频的地址
videoView.setVideoURI(Uri.parse("android.resource://com.webabcd.view/" + R.raw.demo));
// videoView.setVideoPath();
// 设置播放器的控制条
videoView.setMediaController(new MediaController(this));
// 开始播放视频
videoView.start();
}
}
4、WebView 的 Demo
webview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
WebView - 浏览器控件(WebKit 内核)
-->
<WebView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/webView" />
</LinearLayout>
_WebView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
public class _WebView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.webview);
setTitle("WebView");
WebView webView = (WebView) findViewById(R.id.webView);
// 配置浏览器,使其可支持 JavaScript
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
// 清除浏览器缓存
webView.clearCache(true);
// 指定浏览器需要解析的 url 地址
webView.loadUrl("http://webabcd.cnblogs.com/");
// 指定浏览器需要解析的 html 数据
// webView.loadData("<a href='http://webabcd.cnblogs.com/'>webabcd</a>", "text/html", "utf-8");
}
}
5、RatingBar 的 Demo
ratingbar.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
RatingBar - 评分控件
numStars - 评分控件的星星的数量
rating - 当前评分的值
-->
<RatingBar android:id="@+id/ratingBar" android:numStars="5"
android:rating="1.5" android:layout_width="wrap_content"
android:layout_height="wrap_content">
</RatingBar>
<TextView android:id="@+id/textView" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
_RatingBar.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;
public class _RatingBar extends Activity implements RatingBar.OnRatingBarChangeListener {
private RatingBar mRatingBar;
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.ratingbar);
setTitle("RatingBar");
mTextView = (TextView) findViewById(R.id.textView);
mRatingBar = (RatingBar) findViewById(R.id.ratingBar);
// setOnRatingBarChangeListener() - 响应评分值发生改变的事件
mRatingBar.setOnRatingBarChangeListener(this);
}
@Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser) {
mTextView.setText(String.valueOf(rating));
}
}
6、Tab 的 Demo
tab.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<!-- Tab 1 的内容 -->
<TextView android:id="@+id/view1" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="tab1 content" />
<!-- Tab 2 的内容 -->
<TextView android:id="@+id/view2" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="tab2 content" />
</FrameLayout>
_Tab.java
代码
package com.webabcd.view;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
// 实现 Tab 功能的话要继承 TabActivity
public class _Tab extends TabActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TabHost tabHost = getTabHost();
LayoutInflater.from(this).inflate(R.layout.tab, tabHost.getTabContentView(), true);
// Tab 1 的内容
tabHost.addTab(tabHost.newTabSpec("tab1")
.setIndicator("tab1")
.setContent(R.id.view1));
// Tab 2 的内容(设置了 Tab 图片)
tabHost.addTab(tabHost.newTabSpec("tab2")
.setIndicator("tab2", getResources().getDrawable(R.drawable.icon01))
.setContent(R.id.view2));
// Tab 3 的内容(设置 Tab 的内容为指定的 Activity)
tabHost.addTab(tabHost.newTabSpec("tab3")
.setIndicator("tab3")
.setContent(new Intent(this, _TextView.class)));
}
}
7、Spinner 的 Demo
spinner.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/textView" />
<!--
Spinner - 下拉框控件
-->
<Spinner android:id="@+id/spinner" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
_Spinner.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class _Spinner extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.spinner);
setTitle("Spinner");
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// 设置下拉框控件的标题文本
spinner.setPrompt("请选择");
// 实例化适配器,指定显示格式及数据源
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.colors, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
// setOnItemSelectedListener() - 响应下拉框的选中值发生变化的事件
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
TextView textView = (TextView)_Spinner.this.findViewById(R.id.textView);
textView.setText(((TextView)arg1).getText());
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
}
8、Chronometer 的 Demo
chronometer.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
Chronometer - 计时器控件
-->
<Chronometer android:id="@+id/chronometer"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
<Button android:id="@+id/btnStart" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="开始计时">
<requestFocus />
</Button>
<Button android:id="@+id/btnStop" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="停止计时">
</Button>
<Button android:id="@+id/btnReset" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="计时器复位">
</Button>
</LinearLayout>
_Chronometer.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
public class _Chronometer extends Activity {
private Chronometer mChronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.chronometer);
setTitle("Chronometer");
Button button;
mChronometer = (Chronometer) findViewById(R.id.chronometer);
// 设置计时器所显示的时间格式
mChronometer.setFormat("计时:(%s)");
button = (Button) findViewById(R.id.btnStart);
button.setOnClickListener(mStartListener);
button = (Button) findViewById(R.id.btnStop);
button.setOnClickListener(mStopListener);
button = (Button) findViewById(R.id.btnReset);
button.setOnClickListener(mResetListener);
}
View.OnClickListener mStartListener = new OnClickListener() {
public void onClick(View v) {
// 启动计时器
mChronometer.start();
}
};
View.OnClickListener mStopListener = new OnClickListener() {
public void onClick(View v) {
// 暂停计时器
mChronometer.stop();
}
};
View.OnClickListener mResetListener = new OnClickListener() {
public void onClick(View v) {
// 复位计时器,即停止计时器
mChronometer.setBase(SystemClock.elapsedRealtime());
}
};
}
9、ScrollView 的 Demo
scrollview.xml
代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!--
ScrollView - 滚动条控件
scrollbarStyle - 滚动条的样式
-->
<ScrollView android:id="@+id/scrollView"
android:layout_width="fill_parent" android:layout_height="200px"
android:scrollbarStyle="outsideOverlay" android:background="@android:drawable/edit_text">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/textView" />
</ScrollView>
</LinearLayout>
_ScrollView.java
代码
package com.webabcd.view;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class _ScrollView extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.scrollview);
setTitle("ScrollView");
TextView textView = (TextView)this.findViewById(R.id.textView);
textView.setText("a\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na\na");
}
}
发表评论
-
浅析android应用增量升级
2013-05-29 13:31 2749背景 随着android应用体积的不断增大 ... -
Activity是如何生成一个 view 的
2013-05-16 11:09 1390Activity是一个工人,它来控制Window;Windo ... -
Android 获取新浪天气预报数据
2012-12-07 13:07 3129新浪天气预报地址: http://php.weathe ... -
Android连接网络问题
2012-11-23 11:14 2097一、检查网络是否连接 方法一、 publ ... -
Android异步下载图片并且缓存图片到本地
2012-09-06 16:21 1969转来的,以备不时之需!! 在Android开发中 ... -
Android条用照相机,实现可剪切功能
2012-08-12 12:35 4648public class CameraActivity ... -
android--相机开发
2012-08-10 08:17 11659在android中应用相机功能,一般有两种:一种是直接调 ... -
15个令人震惊的HTML5效果
2012-07-04 10:09 137715个令人震惊的HTML5效果 除非你一直 ... -
Android 读写文件的N种写法
2012-07-04 09:54 1136Android 读写文件的N种写法(待续。。。) ... -
如何干掉360(付代码)
2012-06-29 16:09 1393最近360很凶,有推送的,有桌面图标的,全部会被提示有风 ... -
Cocos2d-x跨Android&iOS平台开发入门
2012-06-26 10:22 1618好吧,确实存在这 ... -
解决Android加载图片时内存溢出的问题
2012-06-18 13:52 46439尽量不要使用setImageBitmap或setImag ... -
android 代码 混淆
2012-06-04 10:22 20921、得到 classes.dex文件;直接用你机器上的 ... -
android代码混淆是出现Conversion to Dalvik format failed with error 1的解决方法
2012-06-04 10:18 4514最近做android项目,给代码混淆时遇到问题,在项目加入混淆 ... -
Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
2012-03-20 16:44 1947一、Surface Surface就是“表面”的意思。 ... -
Re-installation failed解决方法
2011-12-27 22:49 4887我的方法:去模拟器卸载上次安装的*.apk ... -
Failed to install *.apk on device 'emulator-5554': timeout
2011-12-20 00:31 9337错误提示: Failed to inst ... -
android 中的 Bitmap
2011-12-20 00:32 3984在Android SDK中说明可以支持的图片格式如下:p ... -
Android 小球重力感应实现
2011-12-16 20:49 1713重力感应主要是依靠手机的加速度传感器(acceleromete ... -
Android中资源文件夹res/raw和assets的使用
2011-12-16 20:37 9581*res/raw和assets的相同点: 1.两者目录 ...
相关推荐
这篇教程主要涵盖了九种常见的Android控件及其使用示例,包括ZoomControls、Include、VideoView、WebView、RatingBar、Tab、Spinner、Chronometer以及ScrollView。下面我们将逐一详细探讨这些控件的功能和用法。 1....
### Android控件及布局的使用知识点详解 #### 第一章:Android基础 ##### 1.1 Android开发环境搭建 - **安装JDK (Java Development Kit)**:Java是Android开发的基础语言,因此首先需要安装JDK。可以从Oracle官网...
### Android2.2 API中文文档——View #### 概述 在Android开发中,`View`是最基本的UI组件,所有可见的用户界面元素都是通过继承`View`类实现的。`View`类定义了控件的行为和外观,并且提供了绘制、布局、处理触摸...
在Android开发中,遵循一套规范是非常重要的,它能提高代码的可读性、可维护性和团队协作效率。以下是一些关键的Android开发规范和注意事项: **布局方面:** 1. **优先使用线性布局(LinearLayout)**,因为它简单...
多目标白鲸优化算法MOBWO:在多目标测试函数中的实证与应用分析,多目标白鲸优化算法MOBWO的实证研究:在九个测试函数中的表现与评估,多目标白鲸优化算法MOBWO 在9个多目标测试函数中测试 Matlab语言 程序已调试好,可直接运行,算法新颖 1将蛇优化算法的优良策略与多目标优化算法框架(网格法)结合形成多目标蛇优化算法(MOSO),为了验证所提的MOSO的有效性,将其在9个多目标测试函数 (ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、Kursawe、Poloni,Viennet2、Viennet3) 上实验,并采用IGD、GD、HV、SP四种评价指标进行评价,部分效果如图1所示,可完全满足您的需求~ 2源文件夹包含MOBWO所有代码(含9个多目标测试函数)以及原始白鲸优化算法文献 3代码适合新手小白学习,一键运行main文件即可轻松出图 4仅包含Matlab代码,后可保证原始程序运行~ ,多目标白鲸优化算法(MOBWO); 测试函数; Matlab语言; 程序调试; 算法新颖; 多目标蛇优化算法(MOSO); IGD、GD、HV、SP评价指标; 代码学习; 轻松出图。,基于
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容概要:本文介绍了在中国石油勘探开发梦想云平台上定义REST API接口的基本规范,旨在提高接口质量,便于开发、测试和维护。主要内容包括REST API的基础概念,设计流程,URI、HTTP方法及响应状态码的运用,API文档的管理以及Swagger工具的应用,还详细阐述了API安全认证,特别是JWT的应用。通过这份文档能够帮助开发者理解和实施高质量的微服务架构。 适用人群:适用于参与或计划参与微服务项目的开发团队,尤其是那些致力于提升REST API接口质量和效率的专业技术人员。 使用场景及目标:文档的目标在于引导用户理解REST API接口设计的关键要素,如资源命名、方法选择等,并教会他们如何有效管理和保护这些API,确保其稳定性和安全性。通过实践本指南的原则,用户可以构建出更加健壮的分布式应用程序接口。 其他说明:此外,文中提供了大量关于API文档生成与维护的最佳做法,强调了文档更新须与代码同步,同时也探讨了API变更管理的有效方法。在安全方面,重点讲述了JWT的构成及其工作机制,展示了利用JWT实现高效认证的具体实例。
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容概要:该文档详细介绍了基于双向长短期记忆(BiLSTM)神经网络与Adaboost集成学习的时间序列预测模型及其应用。文中阐述了项目背景,指出了传统LSTM在复杂数据下存在的局限,提出了通过BiLSTM增强前后依赖关系,并结合Adaboost优化模型精度与泛化能力的方法。全文涵盖了从数据预处理、特征提取到建模、评估、以及GUI设计在内的全过程,并展示了该模型在金融预测、气象预报、能源管理和生产调度等多个领域的广泛应用潜力。文章还包括对代码片段的具体解析、模型部署的考量及未来发展的展望。 适合人群:拥有基本的机器学习与神经网络基础的研究人员和技术开发者,尤其是那些正在寻找时间序列数据分析解决方案的专业人士。 使用场景及目标:1. 多个领域如金融市场、气象预测等的时间序列数据处理任务中;2. 解决传统单一神经网络可能出现的过拟合并优化模型的鲁棒性和准确性。 其他说明:除了详细讲解如何使用Matlab实施完整的BiLSTM和Adaboost集成外,文中还特别注意到了模型调优的重要性——通过超参数搜索、早停策略和其他正则化技巧以预防过拟合情况的发生。此外,文档还讨论了有关实时数据处理、模型安全性和可移植性的要点。附带完整的Matlab代码实现了从环境准备直到预测结果可视化的每一个步骤,使读者可以很容易地复现和定制整个工作流程。
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
内容概要:Go 1.24 版本引入了多项关键改进,其中包括:泛型类型别名,允许类型别名携带类型参数,简化代码实现;弱指针避免对象因包含在缓存中而无法被释放的问题;改进了终结器,提供了新的运行时函数 AddCleanup 以增强对象清理的灵活性和可靠性。另外,Go 1.24 改善了 map 的默认实现,显著提升了其运行时性能。与此同时,开源项目 miniblog 是一个功能全面、易于理解的 Go 实战项目。该项目采用了类似 Kubernetes 的三层架构设计,涵盖了许多 Go 项目开发的最佳实践和技术栈,不仅有助于开发者理解 Go 项目的核心理念和实施方法,还能提供一系列开发脚手架工具、配套课程和支持材料,以便更轻松地开展实际项目。 适合人群:1年以上 Go 开发经验的研发人员或正在寻找优秀 Go 项目充实自己简历的技术人员。 使用场景及目标:该总结的目标是帮助有一定 Go 基础的知识分子迅速了解新特性及其实用价值。miniblog 项目特别适用于希望加深对 Go 实践认识的学习者,尤其是那些想要通过参与实际编码练习和深入理解 Go 内部工作机制的人群。通过这两个方面的内容学习可以帮助使用者更好地理解 Go 新增特性的应用前景和发展方向,并能够在实践中灵活应用。 其他说明:本文档不仅涵盖了新特性的技术和理论要点,同时也展示了如何通过动手实践强化技能的具体例子。阅读本文不仅可以学到最新的 Go 编程技巧,还将了解到实际开发过程中面临的挑战及其解决方案。此外,还提供了一份详细的安装指导,以及一些常见的操作指南。对于新手而言,可以通过提供的完整配套资料逐步建立起个人的知识体系;而对于资深开发者,则可以在更高层次上审视自身项目的架构设计,进而推动技术创新和个人职业发展。
CoW项目是基于大模型的智能对话机器人,支持微信公众号、企业微信应用、飞书、钉钉接入,可选择GPT3.5/GPT4.0/Claude/Gemini/LinkAI/ChatGLM/KIMI/文心一言/讯飞星火/通义千问/LinkAI,能处理文本、语音和图片,通过插件访问操作系统和互联网等外部资源,支持基于自有知识库定制企业AI应用。 功能如下: 1、 多端部署: 有多种部署方式可选择且功能完备,目前已支持微信公众号、企业微信应用、飞书、钉钉等部署方式 2、 基础对话: 私聊及群聊的消息智能回复,支持多轮会话上下文记忆,支持 GPT-3.5, GPT-4o-mini, GPT-4o, GPT-4, Claude-3.5, Gemini, 文心一言, 讯飞星火, 通义千问,ChatGLM-4,Kimi(月之暗面), MiniMax, GiteeAI 3、 语音能力: 可识别语音消息,通过文字或语音回复,支持 azure, baidu, google, openai(whisper/tts) 等多种语音模型 4、 图像能力: 支持图片生等
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
CSDN Matlab武动乾坤上传的资料均是完整代码运行出的仿真结果图,可见完整代码亲测可用,适合小白; 1、完整的代码内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
基于LabVIEW的滚动轴承故障诊断系统:一种振动信号采集与故障诊断的实用设计与实践验证,基于LabVIEW的滚动轴承高效故障诊断系统设计与应用研究,基于LabVIEW的滚动轴承故障诊断系统. 实现对滚动轴承工作状态的监测,提出了一种基于 Lab VIEW 的滚动轴承故障诊断系统的设计方案,给出了滚动轴承振动信号的采集与故障诊断方法,在 Lab VIEW 的诊断平台下进行信号处理与分析,然后结合滚动轴承故障诊断理论与信号分析结果来对该轴承运行状态进行判断。 最后利用旋转机械振动及故障模拟试验平台对该系统进行验证,验证结果体现了该系统具有可行性和适用性。 ,LabVIEW; 滚动轴承故障诊断系统; 振动信号采集; 故障诊断方法; 信号处理与分析; 验证测试; 可行性; 适用性,基于LabVIEW的滚动轴承故障诊断系统设计与验证
Javascript语言视频教程,涵盖Javascript语言基础和高级教程,零基础入门。
python在链表的前面-开头插入一个节点