例1:
首先,让我们来看一下我们要实现的效果图,如下
具体代码实现
res下面的layout布局文件progressbar.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/pb_progressbar_bar"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载" android:onClick="download" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_progressbar_num"/> </LinearLayout>配置xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zking.android06_widget3"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> </activity> <!--写配置--> <activity android:name=".ProgressBarActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
java代码
package com.zking.android06_widget3; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ProgressBar; import android.widget.TextView; /** * Created by Administrator on 2017/6/7 0007. */ public class ProgressBarActivity extends AppCompatActivity{ private ProgressBar pb_progressbar_bar; private TextView tv_progressbar_num; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.progressbar); pb_progressbar_bar = (ProgressBar) findViewById(R.id.pb_progressbar_bar); tv_progressbar_num = (TextView) findViewById(R.id.tv_progressbar_num); } /** * 报错:ANR * application not responsing 应用程序未响应 * why:在主线程中执行了耗时的操作 * how:在子线程中执行耗时操作(解决方法) * @param view */ public void download(View view){ new MyThread().start();//一点按钮就执行 } //线程间通信需要Handler Handler hander=new Handler(){ //接收消息,更新UI界面 @Override public void handleMessage(Message msg) { super.handleMessage(msg); int i= msg.what; tv_progressbar_num.setText(i+"%"); } }; class MyThread extends Thread{//在子线程中执行耗时操作 @Override public void run() { super.run(); for (int i = 0; i <=100 ; i++) {//fori+回车 循环0~100 pb_progressbar_bar.setProgress(i);//给进度条设值 //在子线程中发消息 hander.sendEmptyMessage(i); try { Thread.sleep(100);//抛异常:Alt+回车 } catch (InterruptedException e) { e.printStackTrace(); } } } } } 例2:效果图:activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zking.android06_widget3.MainActivity" android:orientation="vertical" > <ImageView android:layout_width="380dp" android:layout_height="380dp" android:id="@+id/img_main_img1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/radio_rbs" > <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1号佳丽" android:ems="3" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2号佳丽" android:ems="3" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="3号佳丽" android:ems="3" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="4号佳丽" android:ems="3" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="5号佳丽" android:ems="3" /> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="6号佳丽" android:ems="3" /> </RadioGroup> </LinearLayout> </LinearLayout> 方式一:MainActivity.java(从drawable里面获取图片)package com.zking.android06_widget3; import android.support.annotation.IdRes; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.RadioGroup; public class MainActivity extends AppCompatActivity { private ImageView img; private RadioGroup rbs; private int images[]={R.drawable.s1, R.drawable.s2, R.drawable.s3, R.drawable.s4, R.drawable.s5, R.drawable.s6 }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView) findViewById(R.id.img_main_img1); rbs = (RadioGroup) findViewById(R.id.radio_rbs); //给ImageView设置初始图片 img.setImageResource(images[0]); rbs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { //切换图片 img.setImageResource(images[checkedId]); } }); } } 方式二:MainActivity.java(从内存里面获取图片) 配置xml<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zking.ap6"> <!--读取内存卡的权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>package com.zking.ap6; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.support.annotation.IdRes; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import android.widget.RadioGroup; import java.io.File; public class MainActivity extends AppCompatActivity { private ImageView img; private RadioGroup rbs; File[] files; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView) findViewById(R.id.img_main_img1); rbs = (RadioGroup) findViewById(R.id.radio_rbs); //给ImageView设置初始图片 if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ String s=Environment.getExternalStorageDirectory().getAbsolutePath(); File file=new File(s+"/images"); files=file.listFiles(); } Bitmap bm= BitmapFactory.decodeFile(files[0].getAbsolutePath()); img.setImageBitmap(bm); rbs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { //切换图片 Bitmap bm= BitmapFactory.decodeFile(files[checkedId].getAbsolutePath()); img.setImageBitmap(bm); } }); } }