Android开发CheckBox自定义图片问题

 更新时间:2016年9月20日 19:59  点击:1638
在这里我们来看两个关于在android开发中checkbox自定义图片的问题,一个是CheckBox自定义图片没有效果,而另一个是CheckBox自定义图片大小设置。

一,CheckBox自定义图片问题

结果点击的时候 会有checked效果,但是,手指离开后没有check住~

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="false"
android:drawable="@drawable/checkbox_tishi" />
<item android:state_checked="true"
android:drawable="@drawable/checkbox_tishi_select" />

</selector>

上面的写法,最后当然没好使,于是就搜索了一下,搜来的多了一对标签状态,但还是不能用。但是原生的是可以的,想了想还是看看源码好了。发现源码中的配置多了不少,当然首先就是全部复制过来。然后,适当精简一下。再次发布程序,顿时好使了。结果如下:

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_checked="true" android:state_window_focused="false"
android:drawable="@drawable/checkbox_tishi_select" />
<item android:state_checked="false" android:state_window_focused="false"
android:drawable="@drawable/checkbox_tishi" />

<item android:state_checked="true" android:state_pressed="true"
android:drawable="@drawable/checkbox_tishi_select" />
<item android:state_checked="false" android:state_pressed="true"
android:drawable="@drawable/checkbox_tishi" />

<item android:state_checked="true" android:state_focused="true"
android:drawable="@drawable/checkbox_tishi_select" />
<item android:state_checked="false" android:state_focused="true"
android:drawable="@drawable/checkbox_tishi" />

<item android:state_checked="false"
android:drawable="@drawable/checkbox_tishi" />
<item android:state_checked="true"
android:drawable="@drawable/checkbox_tishi_select" />

</selector>


二,CheckBox自定义图片大小问题


1.在drawable中创建文件checkbox_selector.xml:

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="true"
    android:drawable="@drawable/checkbox_ok" /><!--设置选中图片-->
 <item android:state_checked="false"
   android:drawable="@drawable/checkbox_empty" /><!--设置未选中图片-->
</selector>2.在values中创建styles.xml:

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <style name="MyCheckBox" parent="@android:style/Widget.CompoundButton.CheckBox">

    <item name="android:button">@drawable/checkbox_selector</item>

    <item name="android:paddingLeft">25.0dip</item>

    <item name="android:maxHeight">10.0dip</item>

   </style>

</resources>

3.在你的CheckBox中添加属性:

 代码如下 复制代码

<CheckBox
        android:id="@+id/check"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginLeft="5dp"
        style="@style/MyCheckBox" 
        />

下面我们一起来看篇Android开发AnimationDrawable控制逐帧播放动画实现过程,希望文章对各位朋友带不一些帮助。

当我们点击按钮时,该图片会不停的旋转,当再次点击按钮时,会停止在当前的状态。

activity代码:

 

 代码如下 复制代码

package cn.com.chenzheng_java.animation;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
/**
* @description android中的逐帧动画.
* 逐帧动画的原理很简单,跟电影的播放一样,一张张类似的图片不停的切换,当切换速度达到一定值时,
* 我们的视觉就会出现残影,残影的出现保证了视觉上变化的连续性,这时候图片的切换看在我们眼中就跟真实的一样了。
* 想使用逐帧动画:
* 第一步:需要在res/drawable文件夹下新建一个xml文件,该文件详细定义了动画播放时所用的图片、切换每张图片
*        所用的时间、是否为连续播放等等。(有些文章说,在res/anim文件夹下放置该文件,事实证明,会出错哦)
* 第二步:在代码中,将该动画布局文件,赋值给特定的图片展示控件,如本例子中的ImageView。
* 第三步:通过imageView.getBackGround()获取相应的AnimationDrawable对象,然后通过该对象的方法进行控制动画
* @author chenzheng_java
*
*/
public class Animation1Activity extends Activity {
ImageView imageView ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animation1);

imageView = (ImageView) findViewById(R.id.imageView_animation1);
imageView.setBackgroundResource(R.drawable.animation1_drawable);

}

public void myClickHandler(View targetButton){
// 获取AnimationDrawable对象
AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();

// 动画是否正在运行
if(animationDrawable.isRunning()){
//停止动画播放
animationDrawable.stop();
}
else{
//开始或者继续动画播放
animationDrawable.start();
}

}
}

 

animation1.xml文件:

 代码如下 复制代码


<?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:orientation="vertical">
<Button  android:id="@+id/button_animation1" android:text="动画开始"
android:layout_gravity="center_horizontal" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:onClick="myClickHandler"></Button>
<ImageView android:id="@+id/imageView_animation1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_weight="1"></ImageView>
</LinearLayout>

存放动画文件的xml文件:

 

 代码如下 复制代码
<?xml version="1.0" encoding="utf-8"?>
<!--
根标签为animation-list,其中oneshot代表着是否只展示一遍,设置为false会不停的循环播放动画
根标签下,通过item标签对动画中的每一个图片进行声明
android:duration 表示展示所用的该图片的时间长度
-->
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false"
>
<item android:drawable="@drawable/a1" android:duration="50"></item>
<item android:drawable="@drawable/a2" android:duration="50"></item>
<item android:drawable="@drawable/a3" android:duration="50"></item>
<item android:drawable="@drawable/a4" android:duration="50"></item>
<item android:drawable="@drawable/a5" android:duration="50"></item>
<item android:drawable="@drawable/a6" android:duration="50"></item>
</animation-list>

除此之外:在AnimationDrawable中,我们还可以看到如下的几个重要方法:

setOneShot(boolean flag) 和在配置文件中进行配置一样,可以设置动画是否播放一次,false为连续播放;

addFrame (Drawable frame, int duration) 动态的添加一个图片进入该动画中

下面我们来看一款在Android开发之为按钮添加音效实例,如果你有兴趣不防进入参考。

1.layout布局文件:

 代码如下 复制代码

<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:background=”@drawable/activity_background” >

<TextView
android:id=”@+id/title_bar”
android:layout_width=”fill_parent”
android:layout_height=”45dip”
android:layout_alignParentTop=”true”
android:gravity=”center_vertical|center_horizontal”
android:background=”@drawable/theme_title_red”
android:textSize=”25dip”
android:textColor=”#fff”
android:text=”按键声测试”
tools:context=”.MainActivity” />
<Button
android:id=”@+id/btn_test”
android:layout_width=”80dip”
android:layout_height=”30dip”
android:layout_below=”@+id/title_bar”
android:layout_marginLeft=”100dip”
android:layout_marginTop=”20dip”
android:background=”@drawable/bg_btn_submit_selecter”
/>

</RelativeLayout>

 

2.Activity文件:

 代码如下 复制代码

package com.jun.activity;

import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
public Button btn=null;
private SoundPool sp;//声明一个SoundPool
private int music;//定义一个整型用load();来设置suondID

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

private void init() {
// TODO Auto-generated method stub
btn=(Button) findViewById(R.id.btn_test);
sp= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);//第一个参数为同时播放数据流的最大个数,第二数据流类型,第三为声音质量
music = sp.load(this, R.raw.key_sound, 1); //把你的声音素材放到res/raw里,第2个参数即为资源文件,第3个为音乐的优先级

btn.setOnClickListener(listener);
}
private OnClickListener listener =new OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
sp.play(music, 1, 1, 0, 0, 1);

}};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

3.点击提交按钮,就会自动播放, /src/raw文件夹下的key_sound.mp3音乐文件!!!!!

一篇Android学习笔记之多界面切换实例,希望对各位朋友有所帮助。

用过VB 、 VC#的朋友都知道,在VB或VC#里要进行窗口(界面)切换很容易

例如在VB、C#里:

     有 Fom1、 Form2、Form3,如果要切换。

     Form1.show()

     Form2.show()

相当简单,当时在Android里, 要想这么做,很真实很“难”了。要得动动脑筋了。

 

按照我以往的编程经验,我这里提供一种简单的解决办法。

 

第一步 新建一个工程,例如“UITest”。

第二步 对这个工程的代码文件进行改造

  打开“UITestActivity.java”这个文件。将里面部分的代码删除。

把 setContentView 这一行删除掉。这样的话程序就不会自动main.xml 这个界面

 

第三步 对界面进行包装组合

   1个xml的界面文件配合一个java文件

首先我们将Main.xml这个布局界面进行“包装”

 

这样包装完毕后,我们回到UITestActivity.java 这个文件

进行修改

看到没有, 是不是很感觉像VB或VC#了。呵呵

 

第四步 再新建一个xml界面(phone.xml)

 

界面布局好后, 在新建一个类文件 FrmPhone.java

 

这一步完成后,我们回到 Main这个界面, 在里面添加一个【按钮】

按钮控件添加好后, 转到 FrmMain.java里,为这个按钮绑定事件

 

现在测试运行看看。点击Main界面的 【打开FrmPhone】就可以打开Phone这个界面了

点击后,程序跳转到 phone.xml 界面了

 

现在给 【返回】按钮再绑定一个【事件】就可以回到主界面了

 

测试看看, 是不是已经可以自由的在界面直接跳转了。而且很像VB或VC#。

做android开发不能直接使用java环境需要我们重新配置与创建android环境了,下面我把学习笔记分享给大家,希望对各位有所帮助。

近日开始学习Android的开发,所以开始使用Android.

       既然要使用,那么就少不了要搭建一个语言的开发环境.下面就开始讲解吧,其实很简单,但是可能有点小问题,所以还是做下记录的好.

       

No.1:下载JDK.

       地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

       JDK是java语言开发的基础.我们这里下载最新版本的.

       下载好,直接安装即可.

 

 

No.2:下载ADT集成版本.

       地址:http://developer.android.com/sdk/index.html#download

 

       ADT就是 Android Developer Tools 所以离开他,我们可开发不了android 程序.

       下载好,直接解压到英文目录下待用.

 

No.3:配置.

       玩过java的童鞋,一定注意到,为啥木有Eclipse的存在,这里要说一下,就是ADT的新版本为了避免大家配置ADT的时候麻烦,已经把Eclipse集成了,所以才叫ADT集成版.

       好了,下面我们开始配置java环境,我想用过java的童鞋不会陌生.

       <1>:打开我们的系统变量.

       <2>:在"系统变量"里找到一个叫path的家伙,修改它.

               在它的最前端加上JDK的安装路径.如下:

C:Program FilesJavajdk1.7.0_07jrebin;C:Program FilesJavajdk1.7.0_07bin;(这个地址要根据你的电脑来改变)

 

No.4:Eclipse下的配置.


       好了,下面开启Eclipse.

       

       下一步是安装SDK,ADT集成版本会自带一个最新的SDK,但是我们不能用最新的啊,要不然老机子怎么办?所以我们要安装老版本的SDK.

两种方式来安装:

       <1>:在线升级

       这里,点击打开SDK下载工具.

       选中你要安装的版本,直接安装即可.

 

       <2>:下载完整版SDK

       下载版的话,就直接解压到SDK目录里面即可.

 

这样就搭建完成了,剩下的就是穿件虚拟机,然后开始猥琐的编程吧.

 

 

注:

       有些人可能不习惯ADT自带的Eclipse,想要自己下载版本使用.

       这个时候只需要直接将自己下载的版本覆盖ADT自带的版本即可.为啥要这样覆盖而不是直接在外面使用呢,因为ADT自带的版本已经集成NDK(游戏开发的时候用).所以这样更方便.

       又会有人说,为啥我看不到我的那个SDK的管理图标啊?

       这里要设置一下.添加选项:window->customize perspective->command groups availablility

       选中下面的Android相关的项目保存即可.

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • C#创建自定义控件及添加自定义属性和事件使用实例详解

    这篇文章主要给大家介绍了关于C#创建自定义控件及添加自定义属性和事件使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • Ant design vue table 单击行选中 勾选checkbox教程

    这篇文章主要介绍了Ant design vue table 单击行选中 勾选checkbox教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • 自定义jquery模态窗口插件无法在顶层窗口显示问题

    自定义一个jquery模态窗口插件,将它集成到现有平台框架中时,它只能在mainFrame窗口中显示,无法在顶层窗口显示. 解决这个问题的办法: 通过以下代码就可能实现在顶层窗口弹窗 复制代码 代码如下: $(window.top.documen...2014-05-31
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • 自定义feignClient的常见坑及解决

    这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-20
  • Vue 组件复用多次自定义参数操作

    这篇文章主要介绍了Vue 组件复用多次自定义参数操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-27
  • pytorch 自定义卷积核进行卷积操作方式

    今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-05-06
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02