android(3) 启动动画的渐变

来源:互联网 发布:淘宝天天抢拍没有了 编辑:程序博客网 时间:2024/05/22 07:40

一.启动动画的渐变:

    以后可能会用到的启动动画的效果:

效果图:

     

主界面:

public class MainActivity extends Activity {    private LandingView lv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        lv = new LandingView(this);// 将自定义视图显示在本界面setContentView(lv);// 创建修改Logo透明度的异步任务LoGoTask task = new LoGoTask(this,lv);// 执行异步任务task.execute();    }}

异步图片渐变:

public class LoGoTask extends AsyncTask<Object, Integer, String> {// 当前的透明度取值int alpha = 0;MainActivity main;private LandingView lv;public LoGoTask(MainActivity main,LandingView lv){this.main = main;this.lv = lv;}@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}/** * 异步任务执行成功后,自动跳转至应用程序主界面 * */@Overrideprotected void onPostExecute(String result) {    Intent intent=new Intent(main, TestActivity.class);    main.startActivity(intent);    main.finish();}/** * 修改Logo自定义视图图片透明度,并重绘 * */@Overrideprotected void onProgressUpdate(Integer... values) {int temp = values[0].intValue();lv.redraw(temp);}/** * 异步任务,循环改变透明度取值 * */@Overrideprotected String doInBackground(Object... arg0) {// TODO Auto-generated method stubwhile (alpha < 255) {try {Thread.sleep(100);publishProgress(new Integer(alpha));alpha += 5;} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return null;}}

显示图片制作:

public class LandingView extends View{    private  int alpha = 0;private Bitmap logo;private Context context;public LandingView(Context context) {super(context);this.context = context;logo = BitmapFactory.decodeResource(context.getResources(),R.drawable.background1);}public void redraw(int aplha){       this.alpha = aplha;       invalidate();}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);// 清屏canvas.drawColor(Color.WHITE);// 创建画笔对象Paint p = new Paint();// 设置画笔对象的透明度为当前透明度取值p.setAlpha(alpha);WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics dm=new DisplayMetrics();manager.getDefaultDisplay().getMetrics(dm);int width2=dm.widthPixels;int height2=dm.heightPixels;// 在视图上利用画笔绘制Logo图像RectF rect = new RectF(0,0,width2,height2);canvas.drawBitmap(logo, null, rect, p);}}

再来个进入界面:

public class TestActivity extends Activity{ @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}

都统一用一个布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent" ></LinearLayout>




1 1
原创粉丝点击