Android 中文API (33) —— Checkable
来源:互联网 发布:淘宝经营类目怎么修改 编辑:程序博客网 时间:2024/06/06 07:16
此接口定义了一个扩展,使得继承它的视图控件具有可选状态属性。
正文
一、结构
public interface Checkable
间接子类
CheckBox, CheckedTextView, CompoundButton, RadioButton, ToggleButton
此接口定义了一个扩展,使得继承它的视图控件具有可选状态属性。
(译者注:凡是继承了此接口的类,便有了android:checked 属性)
三、公共方法
public abstract boolean isChecked ()
查询当前视图控件的选中状态。
返回:
返回一个boolean的值来表示当前视图控件的选中状态,如果当前控件被选中,返回true值,否则返回false值。
(译者注:并不一定是控件上显示了对号或者点就是被选中,很可能某个思维不同于常人的程序员会把有对号的定义为未选中而返回一个false。当然这只是可能,按照常理来说还是有对号和点的表示选中true,反之亦然。)
public abstract void setChecked (boolean checked)
设置当前视图控件的选中状态。(译者注:
参数:
checked 指定控件的选中状态true表示设置为选中,false为未选中。
此方法用来切换当前视图控件的选中状态。(译者注:即将视图控件的当前状态变为其相反状态
开源项目: AndroidSample-Topeka中的使用:
使用这个接口需要实现3个方法:
@Override public void setChecked(boolean b) { } @Override public boolean isChecked() { } @Override public void toggle() { }
package com.sync.androidsamples.googlesamples.topeka.topeka.widget;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.os.Build;import android.support.annotation.DrawableRes;import android.support.annotation.NonNull;import android.support.v4.content.ContextCompat;import android.support.v4.content.res.ResourcesCompat;import android.support.v4.graphics.drawable.RoundedBitmapDrawable;import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;import android.util.AttributeSet;import android.widget.Checkable;import android.widget.ImageView;import com.sync.androidsamples.R;import com.sync.androidsamples.googlesamples.topeka.topeka.helper.ApiLevelHelper;import com.sync.androidsamples.googlesamples.topeka.topeka.widget.outlineprovider.RoundOutlineProvider;/** * A simple view that wraps an avatar. * Created by Administrator on 2016/8/18 0018. */public class AvatarView extends ImageView implements Checkable{ private boolean mChecked; public AvatarView(Context context) { super(context); } public AvatarView(Context context, AttributeSet attrs) { super(context, attrs); } public AvatarView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void setChecked(boolean b) { mChecked = b; invalidate(); } @Override public boolean isChecked() { return mChecked; } @Override public void toggle() { setChecked(!mChecked); } @SuppressLint("NewApi") public void setAvatar(@DrawableRes int resId) { if (ApiLevelHelper.isAtLeast(Build.VERSION_CODES.LOLLIPOP)) { //为了裁剪一个可绘制的视图形状,需要先设置一个outline然后调用View.setClipToOutline方法 setClipToOutline(true); setImageResource(resId); } else { setAvatarPreLollipop(resId); } } private void setAvatarPreLollipop(@DrawableRes int redId) { Drawable drawable = ResourcesCompat.getDrawable(getResources(), redId, getContext().getTheme()); BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmapDrawable.getBitmap()); roundedBitmapDrawable.setCircular(true); setImageDrawable(roundedBitmapDrawable); } @Override protected void onDraw(@NonNull Canvas canvas) { super.onDraw(canvas); if (mChecked) { Drawable border = ContextCompat.getDrawable(getContext(), R.drawable.selector_avatar); border.setBounds(0,0,getWidth(),getHeight()); border.draw(canvas); } } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (ApiLevelHelper.isLowerThan(Build.VERSION_CODES.LOLLIPOP)) { return; } if (w > 0 && h > 0) { setOutlineProvider(new RoundOutlineProvider(Math.min(w, h))); } }}
0 0
- Android 中文API (33) —— Checkable
- Android7.0中文文档(API)-- Checkable
- Checkable API详解
- 自定义控件 — 创建Checkable ImageButton
- Android之checkable接口
- Android—API中文文档
- Android API 中文 — ListView
- 带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
- 带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
- 带checkbox的ListView实现(二)——自定义Checkable控件的实现方法
- checkable
- <转>Android API 中文(13) —— ToggleButton
- <转>Android API 中文(14) —— ViewStub
- Android API 中文 (15) —— GridView
- <转>Android 中文 API (16) —— AnalogClock
- <转>Android 中文 API (17) —— TextSwitcher
- <转>Android 中文 API (18) —— AbsSeekBar
- <转>Android 中文 API (19) —— TwoLineListItem
- 算法导论二叉搜索树
- PAT (Advanced Level) Practise 1001. A+B Format (20)
- 搭建Nginx代理服务及配置
- 动态规划之背包问题
- 学习资料整理
- Android 中文API (33) —— Checkable
- 【华为机试题】图书录入与检索
- Java第五部分
- hive函数参考手册
- Android实现推送方式解决方案
- MySQL事物隔离级别详解 【转】
- 初识AngularJs(2)
- 仿微信-界面动画(3)-摇一摇
- java中final关键字作用