Android 动态创建一个组件

Android 界面编程有两种基本的方法,一种是在代码中,动态创建一个个组件,及把这些组件用Layout来进行组合成复杂的界面展现.一种是用图形化的方式来编写 布局Layout,这些布局被保存在XML文件中,会编译成资源,被程序中的Activity来加载(setContentView()),再通过findViewById方式来获得每一个界面组件的引用进行操作.  


一,布局管理(Layout)  
每一个界面组件都是View的子类,都可以单独占用一个屏幕,但是真正的有用的界面都是这些组件的组合,在Android中都是用各种Layout来进行布局管理,这与传统的J2SE中的一些AWT,SWING界面方式基本相同,这里就不多说.  
二,一个单独的界面元素:  
在前面说到Hello World例子中,讲过这样一段代码.在Activity中.


Java代码
publicclassHelloActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
TextViewtv=newTextView(this);
tv.setText("Hello,World!");
this.setContentView(tv);


}
}


这里并没有用到Layout,这就是单独的组件方式。也可以改为:
Java代码
super.onCreate(savedInstanceState);
Buttonbtn=newButton(this);
btn.setText("TestButton");
this.setContentView(btn);
编译运行,会有一个全屏的Button,当然这不是你想要的实用的界面.那我们就用Layout来布局
Java代码
super.onCreate(savedInstanceState);
Buttonbtn=newButton(this);
btn.setText("TestButton");
Buttonbtn2=newButton(this);
btn2.setText("TestButton2");
LinearLayoutlayout=newLinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(btn);
layout.addView(btn2);
this.setContentView(layout);


编译运行,你就可以看到了两个上下排列的按钮,当然对于布局管理器的使用,做过PC 上AWT,SWING的人都不陌生,这里就不赘述。  


那想必大家不难猜到,在AWT中,在手机的j2me中,都是用Listener 来处理事件响应,Android也未能脱俗。这与Blackberry,Symbian中的Observer是同一个道理。都是使用了设计模式的观察者模式。下面来看一个能响应事件的例子。
Java代码
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;
importandroid.widget.LinearLayout;




publicclassHelloActivityextendsActivityimplementsOnClickListener{
Buttonbtn=null;
Buttonbtn2=null;
publicvoidonClick(Viewv){
if(v==btn)
{
this.setTitle("YouClickedButton1");
}
if(v==btn2)
{
this.setTitle("YouClickedButton2");
}
}
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
btn=newButton(this);
btn2=newButton(this);
btn.setText("TestButton1");
btn2.setText("TestButton2");
btn.setOnClickListener(this);
btn2.setOnClickListener(this);
LinearLayoutlayout=newLinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.addView(btn);
layout.addView(btn2);
this.setContentView(layout);
}
}


步骤是:
一,生成两个Button,配置Click事件监听者为HelloActivity ,此类实现了OnClickListener接口。
二,放入布局,按布局显示两个Button
三,按下其中一个Button,生成Click事件,调用HelloActivity 的OnClick接口函数。
四,对于View参数的值,判断是哪个View(Button)。改写Activity的Titile内容。注意,可别去对比View.getId(),缺省情况下,每个组件的Id值都为-1,除非人为设定Id值,用可视化编程时,为自动为其生成一个Id值。

转载于:https://my.oschina.net/microoh/blog/144956

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤在Android动态添加桌面小组件: 1. 创建小组件布局:首先,创建一个布局文件来定义小组件的外观。这可以在res/layout目录下的XML文件中完成。你可以使用不同的视图和布局来设计小组件。 2. 创建小组件提供者:创建一个扩展AppWidgetProvider类的Java类。这个类将负责处理小组件的生命周期事件,例如创建、更新和删除小组件。 3. 配置小组件提供者:在AndroidManifest.xml文件中,注册你的小组件提供者类。使用<receiver>标签来指定小组件提供者类,并使用<intent-filter>标签来定义处理小组件生命周期事件的操作。 4. 更新桌面:当用户将小组件拖放到桌面时,你需要在运行时动态添加小组件。为此,你可以使用AppWidgetManager类的updateAppWidget()方法来更新小组件视图。 下面是一个示例代码,展示如何动态添加桌面小组件: ```java // 创建小组件布局 RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout); // 配置小组件点击事件 Intent intent = new Intent(context, MyWidgetProvider.class); intent.setAction("ACTION_WIDGET_CLICKED"); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0); remoteViews.setOnClickPendingIntent(R.id.widget_button, pendingIntent); // 更新桌面小组件 AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName componentName = new ComponentName(context, MyWidgetProvider.class); appWidgetManager.updateAppWidget(componentName, remoteViews); ``` 请注意,你需要根据你的需求适应以上代码,并根据你的小组件布局和逻辑进行修改。 希望这能帮助到你!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值