‘壹’ android四大组件继承哪个父类
Android四组件别activity、service、content provider、broadcast receiver 、android四组件详解 1、activity (1)Activity通单独屏幕(窗口) (2)Activity间通Intent进行通信 (3)android应用每Activity都必须要AndroidManifest.xml配置文件声明否则系统识别执行该Activity 2、service (1)service用于台完用户指定操作service两种: (a)started(启):应用程序组件(activity)调用startService()启服务服务处于started状态 (b)bound(绑定):应用程序组件调用bindService()绑定服务服务处于bound状态 (2)startService()与bindService()区别: (a)started service(启服务)由其组件调用startService()启导致服务onStartCommand()调用服务started状态其命周期与启组件关并且台限期运行即使启服务组件已经销毁服务需要完任务调用stopSelf()停止或者由其组件调用stopService()停止 (b)使用bindService()启用服务调用者与服务绑定起调用者旦退服务终止求同必须同死特点 (3)发员需要应用程序配置文件声明全部service使用标签 (4)Service通位于台运行般需要与用户交互Service组件没图形用户界面Service组件需要继承Service基类Service组件通用于其组件提供台服务或监控其组件运行状态 3、content provider (1)android平台提供Content Provider使应用程序指定数据集提供给其应用程序其应用通ContentResolver类该内容提供者获取或存入数据 (2)需要应用程序间共享数据才需要内容提供者例通讯录数据应用程序使用且必须存储内容提供者处统数据访问式 (3)ContentProvider实现数据共享ContentProvider用于保存获取数据并使其所应用程序见同应用程序间共享数据唯式android没提供所应用共同访问公共存储区 (4)发员直接使用ContentProvider类象数通ContentResolver象实现ContentProvider操作 (5)ContentProvider使用URI唯标识其数据集URIcontent://作前缀表示该数据由ContentProvider管理 4、broadcast receiver (1)应用使用外部事件进行滤兴趣外部事件(电呼入或者数据中国络用)进行接收并做响应广播接收器没用户界面启activity或serice响应收信息或者用NotificationManager通知用户通知用种式吸引用户注意力例闪背灯、震、播放声音等般说状态栏放持久图标用户打并获取消息 (2)广播接收者注册两种别程序态注册AndroidManifest文件进行静态注册 (3)态注册广播接收器特点用注册Activity关掉广播失效静态注册需担忧广播接收器否关闭要设备启状态广播接收器打着说哪怕app本身未启该app订阅广
‘贰’ 关于android 继承了BaseAdapter类后的一些问题,我这个程序就是为了实现一个图片的拖拽,就是Gallery
因为你的getCount()返回的是mImageIds.length为5;
所以 getView(int position, ... )会先后将自动被调用5次。产生5个view。这5个view就是你在Galley里看到的5个view。
第一次调用,position=0.
每二次调用,position=1,
。。。
最后一次,position=4.
只要在你的getView(int position, ... )方法中写成imageview.setImageResource(mImageIds[position]);
因为每次position不一样,刚好就把你的五幅图顺序摆放了。
‘叁’ android开关按钮怎么实现
在Android中,不管什么样子的视图都是继承自View类,因此我们必须要自定义一个View类,下面看一下代码实现:
com\mandr\demo\ TestSlipButtonActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class TestSlipButtonActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SlipButton mSlipButton=(SlipButton)findViewById(R.id.slipButton);
mSlipButton.setOnChangedListener(new OnChangedListener() {
@Override
public void OnChanged(boolean checkState) {
if(checkState){
Log.d("TestSlipButtonActivity", "checkState = "+checkState);
}else{
Log.d("TestSlipButtonActivity", "checkState = "+checkState);
}
}
});
}
}
//View的核心代码
public class ToogleButton extends View {
private static final String Tag="ToogleButton";
private int width;
private int height;
private Paint mPaint;
public ToogleButton(Context context) {
super(context);
init();
}
public ToogleButton(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public ToogleButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init(){
Log.d(Tag, "init()");
mPaint = new Paint();
mPaint.setColor(Color.GRAY);
mPaint.setAlpha(255);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
//draw rect
RectF rectF = new RectF();
width = 80;
height = 30;
rectF.set(0, 0, width, height);
canvas.drawRoundRect(rectF, 7, 7, mPaint);
//draw half
mPaint.setColor(Color.BLUE);
RectF tButton = new RectF();
tButton.set(0, 0, width/2, height);
canvas.drawRoundRect(tButton, 7, 7, mPaint);
//draw text
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(23);
mPaint.setTextAlign(Align.CENTER);
mPaint.setTypeface(Typeface.DEFAULT);
canvas.drawText("开", 15, 25, mPaint);
canvas.drawText("关", 57, 25, mPaint);
//draw half
mPaint.setColor(Color.WHITE);
RectF button = new RectF();
button.set(0, 0, width/2, height);
canvas.drawRoundRect(button, 7, 7, mPaint);
super.onDraw(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Log.d(Tag, "widthMeasureSpec ="+widthMeasureSpec);
Log.d(Tag, "heightMeasureSpec = "+heightMeasureSpec);
width = MeasureSpec.getSize(widthMeasureSpec);
height = MeasureSpec.getSize(heightMeasureSpec);
Log.d(Tag, "width="+width);
Log.d(Tag, "height="+height);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
if(event.getAction() == MotionEvent.ACTION_DOWN){
int eventX = (int)event.getX();
int eventY = (int)event.getY();
Log.d(Tag, "x = "+eventX+", y ="+eventY);
if(eventX <(width /2)){
Log.d(Tag, "开");
}else{
Log.d(Tag, "关");
}
}
return true;
}
}
测试程序比较简单,就是把自定义的View组件当作一般的系统View组件使用就可以了,用法一样,在此我给出一个范例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<com.mandr.demo.SlipButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/slipButton"
/>
</LinearLayout>
到此一个精美的按钮组件就开发完成了,希望对你以后的开发有用。附加了view的全部代码。
‘肆’ android 代码,一个类不继承Activity如何使用menu
你可以先让B继承Activity实现menu,然后让其他子类A再继承实现了按钮功能的B
‘伍’ 在android中按钮共分为几种
关于Android中View控件的分类可以分为以下几类:
1. 文本类:
TextView、EditText、AutoCompleteTextView、MultAutoCompletTextView 、(TextSwitcher) 、(DigitalClock)
ExtractEditText、CheckedTextView、Chronometer
2.按钮类:
Button、CheckBox、RadioButton(RadioGroup) 、ToggleButton 、(ImageButton ) CompoundButton
2. 缩放按钮:
ZoomButton、ZoomControls
3. 图片类:
ImageView、ZoomButton、ImageButton、(ImageSwitcher ) QuickContactBadge
4. 时间控件:
DigitalClock、AnalogClock、TimePicker、DatePicker
5.进度显示:
ProgressBar、AbsSeekBar、SeekBar、RatingBar(星星评分)
6.导航: TabHost、TabWidget。
7.视频媒体:
VideView、MediaController
8.Dialog对话框
CharacherPickerDialog、AlertDialog、DatePickerDialog、ProgressDialog、TimePickerDialog
9. 布局类控件:
AbsoluteLayout、LinearLayout、RadioGroup 、TableLayout、 TableRow、RelativeLayout、FrameLayout
10.需要适配器的布局类:
AdapterView、AbsListView、GridView、ListView、AbsSpinner、Gallery Spinner
11.滚动条: HorizontalScrollView、ScrollView
12.网页: WebView
13.动画: ViewAimator、ViewFilpper、ViewSwitcher、ImageSwitcher、TextSwitcher
‘陆’ android五大布局继承哪个类
所有的控件和布局 都继承View这个类
‘柒’ android自定义组件应该直接或间接继承哪个类
1、自定义view需要注意构造函数,所有的xml布局,初始化时构造函数使用的都是(Contextcontext,AttributeSetattrs){两个参数的。如果没有该构造函数会报错。
2、如果有自定义属性,则需要在当前xml中引入工程包名,否则自定义属性会报错
这个问题报错的愿意是第一个,构造函数使用错误。增加构造函数就能解决问题。
比如:
publicclassMyViewextendsView{//下面2个构造函数都加上
publicMyView(Contextcontext){
}
publicMyView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
}
‘捌’ android中带图标的按钮(ImageButton)怎么用
除了Android系统自带的Button按钮以外,还提供了带图标的按钮ImageButton
要制作带图标的按钮,首先要在布局文件中定义ImageButton,然后通过setImageDrawable方法来设置要显示的图标。
注意:
我们可以在布局文件中就直接设置按钮的图标,如
android:src=”@drawable/icon1″
我们也可以在程序中设置自定义图标
imgbtn3.setImageDrawable(getResources().getDrawable(R.drawable.icon2));
我们还可以使用系统自带的图标
imgbtn4.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_call_incoming));
设置完按钮的图标后,需要为按钮设置监听setOnClickListener,以此捕获事件并处理
下面的例子讲述的是由4个图标按钮组成的布局,其中三个按钮的图标是自定义的,第四个按钮的图标是系统的,当点击按钮1的时候,弹出dialog,当点击按钮2的时候,点击确定后,可以将按钮2的图标变成按钮3的图标,当点击按钮3的时候,按钮3的图标变成了系统打电话的图标,点击按钮4,显示一个提示dialog
ImageButtonTest.java源代码
package org.loulijun.imagebutton;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
public class ImageButtonTest extends Activity {
/** Called when the activity is first created. */
TextView textview;
ImageButton imgbtn1;
ImageButton imgbtn2;
ImageButton imgbtn3;
ImageButton imgbtn4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textview=(TextView)findViewById(R.id.textview);
//分别取得4个ImageButton对象
imgbtn1=(ImageButton)findViewById(R.id.imagebutton1);
imgbtn2=(ImageButton)findViewById(R.id.imagebutton2);
imgbtn3=(ImageButton)findViewById(R.id.imagebutton3);
imgbtn4=(ImageButton)findViewById(R.id.imagebutton4);
//分别为ImageButton设置图标
//imgbtn1已经在main.xml布局中设置了图标,所以就不在这里设置了(设置图标即可在程序中设置,也可在布局文件中设置)
imgbtn2.setImageDrawable(getResources().getDrawable(R.drawable.icon));//在程序中设置图标
imgbtn3.setImageDrawable(getResources().getDrawable(R.drawable.icon2));
imgbtn4.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_call_incoming));//设置系统图标
//下面为各个按钮设置事件监听
imgbtn1.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)
.setTitle("提示")
.setMessage("我是ImageButton1")
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//相应的处理操作
}
}).create();
dialog.show();
}
});
imgbtn2.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)
.setTitle("提示")
.setMessage("我是ImageButton2,我要使用ImageButton3的图标")
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
imgbtn2.setImageDrawable(getResources().getDrawable(R.drawable.icon2));
}
}).create();
dialog.show();
}
});
imgbtn3.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)
.setTitle("提示")
.setMessage("我是ImageButton3,我想使用系统打电话的图标")
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
imgbtn3.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));
}
}).create();
dialog.show();
}
});
imgbtn4.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)
.setTitle("提示")
.setMessage("我是使用的系统图标")
.setPositiveButton("确定",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
//相应的处理操作
}
}).create();
dialog.show();
}
});
}
}
布局文件main.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:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="ImageButton测试案例"
/>
<ImageButton
android:id="@+id/imagebutton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon1"
/>
<ImageButton
android:id="@+id/imagebutton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageButton
android:id="@+id/imagebutton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<ImageButton
android:id="@+id/imagebutton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
‘玖’ android一般继承哪几个类 activity
安卓的界面xml文件是和Activity类绑定的,二者缺一不可,看你的类实现什么功能,如果是人机交互的,即处理某个界面的的一系列操作的,就得继承Activity类,你只要记住一点,就是xml文件是需要通过Activity类才能起作用的
‘拾’ android 如何继承Activity类实现双指缩放、单指拖曳图片
onTouch方法和onTouchEvent方法。
onTouch方法是View的 OnTouchListener借口中定义的方法。
当一个View绑定了OnTouchLister后,当有touch事件触发时,就会调用onTouch方法。
(当把手放到View上后,onTouch方法被一遍一遍地被调用)
onTouchEvent方法是override 的Activity的方法。
重新了Activity的onTouchEvent方法后,当屏幕有touch事件时,此方法就会别调用。
(当把手放到Activity上时,onTouchEvent方法就会一遍一遍地被调用)
在一个Activity里面放一个TextView的实例tv,并且这个tv的属性设定为 fill_parent
在这种情况下,当手放到屏幕上的时候,首先会是tv响应touch事件,执行onTouch方法。
如果onTouch返回值为true,
表示这个touch事件被onTouch方法处理完毕,不会把touch事件再传递给Activity,
也就是说onTouchEvent方法不会被调用。
(当把手放到屏幕上后,onTouch方法被一遍一遍地被调用)
如果onTouch的返回值是false,
表示这个touch事件没有被tv完全处理,onTouch返回以后,touch事件被传递给Activity,
onTouchEvent方法被调用。
(当把手放到屏幕上后,onTouch方法调用一次后,onTouchEvent方法就会一遍一遍地被调用)