首页 > 编程技术 > android

Android开发CheckBox自定义图片问题

发布时间:2016-9-20 19:59

在这里我们来看两个关于在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--]

您可能感兴趣的文章: