对于Android自带的Button按钮控件很多网友感觉不是很美观,如果界面上按钮不多,我们可以通过一种简单的方法实现Button脱胎换骨的外观,考虑到效率Android的layout方式的xml文件先不用了,毕竟控件不多模拟一个个性化Button还是很简单的,我们直接通过图片实现颜色的,代码如下: private Button mBtn; //定义我们的按钮 在onCreate中加入 mBtn = (Button) findViewById(R.id.btn); //btn为layout中的Button ID mBtn.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View arg0,MotionEvent arg1) { if(arg1.getAction() == MotionEvent.ACTION_DOWN) { arg0.setBackgroundResource(R.drawable.pressed); //按下的图片对应pressed } else if(arg1.getAction() == MotionEvent.ACTION_UP) { arg0.setBackgroundResource(R.drawable.normal); //常态下的图片对应normal } else if() […]
控件
Android的ListView控件滚动时背景问题 Android开发技术
如果大家在非黑色背景下使用ListView控件时,Android默认可能在滚动ListView时这个列表控件的背景突然变成黑色。这样可能导致程序的黑色的背景和主程序的主题既不协调。解决的方法Google在设计Android时也考虑了,在Layout的ListView中加入android:cacheColorHint="#00000000" 的属性即可。
Android UI开发专题(四) View自绘控件 Android开发技术
很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制。 首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方法,对于相关的按键可以重载onKeyDown、onKeyUp以及onTouchEvent等,下面android开发网就以一个实例来表示。 public class cwjView extendsView{ public cwjView(Context context) { this(context,null); } public cwjView(Context context,AttributeSet attrs) { this(context,attrs,0); } public cwjView(Context context,AttributeSet attrs,int defStyle) { super(context,attrs,defStyle); //这里是本类的构造,相关初始化可以在这里添加代码 } @Override protectd void onDraw(Canvas canvas) { super(canvas); //绘图的关键,可以看到已经包含了一个canvas句柄,可以直接通过我们前面讲到的Canvas类进行相关的操作,完整的例子,大家可以参考Android SDK中例子Snake贪食蛇游戏的实现。 } } 有关View类的更新,我们直接通过调用invalidate(int l,int r,int r,int b)来更新一个Rect矩形区域,或更新全部,同时在线程中我们使用需要调用postInvalidate来更新界面。
Android控件开发之ToggleButton原理 Android开发技术
在Android平台上比较有特色的就是ToggleButton控件,虽然它的功能和CheckBox有些类似,但是他们的用处还是有一定的区别比如ToggleButton原本有图片装饰,通过ToggleButton可以很清楚的显示某些状态。它们均从Button为基类的CompoundButton中实现,其真假事件从Checkable来实现。 public abstract class CompoundButton extends Button implements Checkable { private boolean mChecked; //状态是否选中 private int mButtonResource; private boolean mBroadcasting; private Drawable mButtonDrawable; //按钮的图标 private OnCheckedChangeListener mOnCheckedChangeListener; //选中状态改变监听 private OnCheckedChangeListener mOnCheckedChangeWidgetListener; private static final int[] CHECKED_STATE_SET = { R.attr.state_checked }; public CompoundButton(Context context) { this(context, null); } public CompoundButton(Context context, […]

