自定义控件的开发
来源:互联网 发布:淘宝网中老年女装秋装 编辑:程序博客网 时间:2024/05/02 01:51
自定义控件的开发
分类: Android开发2013-07-31 13:45 271人阅读 评论(0) 收藏 举报
很多时候,android提供的组件并不能满足我们的需求,于是我们不得不按需求开发自定义控件。
Step 1.
写好自定义控件的内部布局文件。
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="horizontal" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:paddingBottom="5dip" android:paddingLeft="40dip" android:paddingTop="5dip" android:src="@drawable/confirm" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="8dip" android:text="确定" android:textColor="#000000" /></LinearLayout>
Step 2:
写好自定义的控件类并继承LinearLayout,并写好相关方法,用于控制自定义控件的内容。
package org.hjw.mybutton;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;public class my extends LinearLayout { private ImageView image; private TextView text; public my(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater ll = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); ll.inflate(R.layout.my_button, this); image = (ImageView) findViewById(R.id.image); text = (TextView) findViewById(R.id.text); } public void setImage(int Resid) { image.setImageResource(Resid); } public void setText(String ext) { text.setText(ext); }}
Step3:
需要使用自定义控件时,只需要在xml文件中加入即可,这里我们在主布局文件中加入。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/black" android:orientation="horizontal" > <org.hjw.mybutton.my android:id="@+id/myButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_button" /> <org.hjw.mybutton.my android:id="@+id/myButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/bg_button" android:layout_marginLeft="5dp">
</org.hjw.mybutton.my></LinearLayout>
Step 4:
为了使用户体验效果更好,可以加入背景图片的变化效果。
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> <item android:state_pressed="true" android:drawable="@drawable/btn_white"></item> <item android:state_checked="true" android:drawable="@drawable/btn_white"></item> <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/btn_normal"></item> </selector>
Step 5:
最后在主Activity中像使用其他控件一样使用此控件。
package org.hjw.mybutton;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.widget.Toast;public class MainActivity extends Activity { private my My, My2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); My = (my) findViewById(R.id.myButton1); My2 = (my) findViewById(R.id.myButton2); My2.setImage(R.drawable.cancel); My2.setText("取消"); My.setImage(R.drawable.confirm); My.setText("确定"); My.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "You just clicked!", 1) .show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
Step 6:
我们看看效果吧。
╭︿︿︿╮ {/ o o /} ( (oo) ) ︶ ︶︶
0 0
- 自定义控件的开发
- 自定义控件的开发
- 自定义控件的开发
- 开发简单的自定义控件
- 开发自定义控件的步骤
- 开发简单的自定义服务器控件
- 自己开发的自定义分页控件
- 开发的自定义分页控件(转)
- Asp.net自定义控件的开发
- [翻译]开发Silverlight 2.0的自定义控件
- Qt自定义控件的开发和使用
- 如何开发FineReport的自定义控件?
- 基于.NET自身的控件来开发自定义控件
- 基于.NET自身的控件来开发自定义控件
- 开发Eclipse自定义控件
- WinCE 开发自定义控件
- 开发Eclipse自定义控件
- Flex开发自定义控件
- Unity中的类型转换格式
- struts2 验证码生成
- 浅谈C++多态性
- 【iOS开发】---- iOS自动布局(一)
- C# 3.0 介绍 (五) - 之Where操作
- 自定义控件的开发
- 文档无法保存。读取文档时出现问题(135)
- linux shell awk 语法
- Linux下调整根目录的空间大小
- 面包WIP2
- 设置Apache访问限制,针对6种不同情况设置
- ext js获取html标签中id的值
- 大户人家的孝道中有一条叫做晨昏定省
- java中的static和final