有的人一生默默无闻,有的人一生轰轰烈烈,甚至千古流芳,为什么会这样?因为默默无闻的人只是满足于现状,而不去想怎么轰轰烈烈过一生,不要求自己,去做,去行动,怎么能够成功?


wechat6Activity.java的代码:

package siso.geekworld;import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.Window;import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;import viewhelper.ChangeColorIconWithText;
import viewhelper.TabFragment;public class wechat6Activity extends FragmentActivity implements View.OnClickListener,ViewPager.OnPageChangeListener{private ViewPager viewPager;private List<Fragment> mTabs = new ArrayList<>();private String[] mTitles = new String[]{"First Fragment","Second Fragment","Third Fragment","Fourth Fragment"};private FragmentPagerAdapter adapter;private List<ChangeColorIconWithText> mTabIndicators = new ArrayList<>();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_wechat6);setOverflowButtonAlways();getActionBar().setDisplayShowHomeEnabled(false);initView();initDatas();initEvents();viewPager.setAdapter(adapter);}//初始化所有事件private void initEvents() {viewPager.addOnPageChangeListener(this);}//初始化所有数据private void initDatas() {for(String mtitle:mTitles){TabFragment tabFragment = new TabFragment();Bundle bundle = new Bundle();bundle.putString(TabFragment.TITLE,mtitle);tabFragment.setArguments(bundle);mTabs.add(tabFragment);}adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {@Overridepublic android.support.v4.app.Fragment getItem(int position) {return mTabs.get(position);}@Overridepublic int getCount() {return mTabs.size();}};}//初始化所有viewprivate void initView() {viewPager = (ViewPager)findViewById(R.id.id_viewpager);ChangeColorIconWithText one = (ChangeColorIconWithText)findViewById(R.id.id_indicator_one);ChangeColorIconWithText two = (ChangeColorIconWithText)findViewById(R.id.id_indicator_two);ChangeColorIconWithText three = (ChangeColorIconWithText)findViewById(R.id.id_indicator_three);ChangeColorIconWithText four = (ChangeColorIconWithText)findViewById(R.id.id_indicator_four);mTabIndicators.add(one);mTabIndicators.add(two);mTabIndicators.add(three);mTabIndicators.add(four);one.setOnClickListener(this);two.setOnClickListener(this);three.setOnClickListener(this);four.setOnClickListener(this);one.setIconAlpha(1.0f);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}//应用反射改变OverflowButton的图标private void setOverflowButtonAlways(){try {ViewConfiguration config = ViewConfiguration.get(this);Field menuKey = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");menuKey.setAccessible(true);menuKey.setBoolean(config, false);} catch (Exception e) {e.printStackTrace();}}//设置menu显示icon@Overridepublic boolean onMenuOpened(int featureId, Menu menu) {if(featureId== Window.FEATURE_ACTION_BAR&&menu!=null){if(menu.getClass().getSimpleName().equals("MenuBuilder")){try {Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);method.setAccessible(true);method.invoke(menu,true);} catch (Exception e) {e.printStackTrace();}}}return super.onMenuOpened(featureId, menu);}@Overridepublic void onClick(View v) {resetOtherTabs();switch (v.getId()){case R.id.id_indicator_one:mTabIndicators.get(0).setIconAlpha(1.0f);viewPager.setCurrentItem(0,false);break;case R.id.id_indicator_two:mTabIndicators.get(1).setIconAlpha(1.0f);viewPager.setCurrentItem(1, false);break;case R .id.id_indicator_three:mTabIndicators.get(2).setIconAlpha(1.0f);viewPager.setCurrentItem(2, false);break;case R.id.id_indicator_four:mTabIndicators.get(3).setIconAlpha(1.0f);viewPager.setCurrentItem(3, false);break;}}private void resetOtherTabs() {for(int i=0;i<mTabIndicators.size();i++){mTabIndicators.get(i).setIconAlpha(0);}}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {if(positionOffset>0){ChangeColorIconWithText left = mTabIndicators.get(position);ChangeColorIconWithText right = mTabIndicators.get(position+1);left.setIconAlpha(1-positionOffset);right.setIconAlpha(positionOffset);}}@Overridepublic void onPageSelected(int position) {}@Overridepublic void onPageScrollStateChanged(int state) {}}

ChangeColorIconWithText.java代码:

package viewhelper;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Looper;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;import siso.geekworld.R;public class ChangeColorIconWithText extends View {private int mColor = 0xFF45C01A;private String mText = "微信";private Bitmap mIconBitmap;private int mTextSize = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,12,getResources().getDisplayMetrics());private Canvas mCanvas;private Bitmap mBitmap;private Paint mPaint;//透明度0.0~1.0private float mAlpha ;private Rect mIconRect;private Rect mTextBound;private Paint mTextPaint;private static final String INSTANCE_STATUS = "instance_status";private static final String INSTANCE_ALPHA = "instance_alpha";public ChangeColorIconWithText(Context context) {this(context, null);}public ChangeColorIconWithText(Context context, AttributeSet attrs) {this(context, attrs, 0);}/*** 获取自定义属性的值* @param context* @param attrs* @param defStyleAttr*/public ChangeColorIconWithText(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ChangeColorIconWithText);int n = a.getIndexCount();for(int i=0;i<n;i++){int attr = a.getIndex(i);switch (attr){case R.styleable.ChangeColorIconWithText_micon:BitmapDrawable drawable =(BitmapDrawable)a.getDrawable(attr);mIconBitmap = drawable.getBitmap();break;case R.styleable.ChangeColorIconWithText_mcolor:mColor = a.getColor(attr,0xFF45C01A);break;case R.styleable.ChangeColorIconWithText_text:mText = a.getString(attr);break;case R.styleable.ChangeColorIconWithText_text_size:mTextSize = (int)a.getDimension(attr,TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,12,getResources().getDisplayMetrics()));break;}}a.recycle();mTextBound = new Rect();mTextPaint = new Paint();mTextPaint.setTextSize(mTextSize);mTextPaint.setColor(0Xff555555);mTextPaint.getTextBounds(mText, 0, mText.length(), mTextBound);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int iconWidth = Math.min(getMeasuredWidth() - getPaddingLeft() - getPaddingRight(),getMeasuredHeight() - getPaddingTop() - getPaddingBottom() - mTextBound.height());int left = getMeasuredWidth()/2 - iconWidth/2;int top = getMeasuredHeight()/2-(mTextBound.height()+iconWidth)/2;mIconRect = new Rect(left,top,left+iconWidth,top+iconWidth);}@Overrideprotected void onDraw(Canvas canvas) {canvas.drawBitmap(mIconBitmap, null, mIconRect, null);int alpha = (int)Math.ceil(255*mAlpha);//内存准备Bitmap,setAlpha,纯色,xfermode,图标setUpTargetBitmap(alpha);//1.绘制原文本  2.绘制变色的文本drawSourceText(canvas,alpha);drawTargetText(canvas,alpha);canvas.drawBitmap(mBitmap, 0, 0, null);}//绘制变色的文本private void drawTargetText(Canvas canvas, int alpha) {mTextPaint.setColor(mColor);mTextPaint.setAlpha(alpha);int x = mIconRect.left+mIconRect.width()/2-mTextBound.width()/2;int y = mIconRect.bottom+mTextBound.height();canvas.drawText(mText, x, y, mTextPaint);}//绘制原文本private void drawSourceText(Canvas canvas, int alpha) {mTextPaint.setColor(0xff333333);mTextPaint.setAlpha(255-alpha);int x = mIconRect.left+mIconRect.width()/2-mTextBound.width()/2;int y = mIconRect.bottom+mTextBound.height();canvas.drawText(mText, x, y, mTextPaint);}//在内存中绘制可变色的Iconprivate void setUpTargetBitmap(int alpha) {mBitmap = Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(), Bitmap.Config.ARGB_8888);mCanvas = new Canvas(mBitmap);mPaint = new Paint();mPaint.setColor(mColor);//抗锯齿mPaint.setAntiAlias(true);//抖动处理mPaint.setDither(true);mPaint.setAlpha(alpha);mCanvas.drawRect(mIconRect, mPaint);mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));mPaint.setAlpha(255);mCanvas.drawBitmap(mIconBitmap, null, mIconRect, mPaint);}public void setIconAlpha(float alpha){this.mAlpha = alpha;//重绘invalidateView();}private void invalidateView(){if(Looper.getMainLooper()==Looper.myLooper()){//是UI线程invalidate();}else{postInvalidate();}}@Overrideprotected Parcelable onSaveInstanceState() {Bundle bundle = new Bundle();bundle.putParcelable(INSTANCE_STATUS,super.onSaveInstanceState());bundle.putFloat(INSTANCE_ALPHA,mAlpha);return bundle;}@Overrideprotected void onRestoreInstanceState(Parcelable state) {if(state instanceof Bundle){Bundle bundle = (Bundle)state;mAlpha = bundle.getFloat(INSTANCE_ALPHA);super.onRestoreInstanceState(bundle.getParcelable(INSTANCE_STATUS));}else{super.onRestoreInstanceState(state);}}
}

TabFragment.java代码:

package viewhelper;import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;public class TabFragment extends android.support.v4.app.Fragment {private String mTitle = "DEFAULT";public static final String TITLE = "title";@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {if(getArguments()!=null){mTitle = getArguments().getString(TITLE);}TextView tv = new TextView(getActivity());tv.setText(mTitle);tv.setTextSize(20);tv.setGravity(Gravity.CENTER);tv.setBackgroundColor(Color.parseColor("#ffffffff"));return tv;}
}

activity_wechat6.xml内容:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:hymen="http://schemas.android.com/apk/res-auto"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v4.view.ViewPagerandroid:id="@+id/id_viewpager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"></android.support.v4.view.ViewPager><LinearLayoutandroid:orientation="horizontal"android:background="@drawable/tab_bg"android:layout_width="match_parent"android:layout_height="60dp"><viewhelper.ChangeColorIconWithTextandroid:id="@+id/id_indicator_one"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"hymen:micon="@drawable/ic_menu_start_conversation"hymen:mcolor="#ff45c01a"hymen:text_size="12sp"hymen:text="@string/app_name"/><viewhelper.ChangeColorIconWithTextandroid:id="@+id/id_indicator_two"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"hymen:micon="@drawable/ic_menu_friendslist"hymen:mcolor="#ff45c01a"hymen:text_size="12sp"hymen:text="@string/tab_contact"/><viewhelper.ChangeColorIconWithTextandroid:id="@+id/id_indicator_three"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"hymen:mcolor="#ff45c01a"hymen:micon="@drawable/ic_menu_emoticons"hymen:text="@string/tab_found"hymen:text_size="12sp" /><viewhelper.ChangeColorIconWithTextandroid:id="@+id/id_indicator_four"android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:padding="5dp"hymen:mcolor="#ff45c01a"hymen:micon="@drawable/ic_menu_allfriends"hymen:text="@string/tab_me"hymen:text_size="12sp" /></LinearLayout>
</LinearLayout>

strings.xml内容:

<resources><string name="app_name">微信</string><string name="action_search">查找</string><string name="action_add">添加</string><string name="menu_group_chat">发起群聊</string><string name="menu_feedback">意见反馈</string><string name="menu_addfriend">添加朋友</string><string name="menu_scan">扫一扫</string><string name="tab_contact">通讯录</string><string name="tab_found">发现</string><string name="tab_me">我</string></resources>

main.xml内容 :

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><item
        android:id="@+id/action_search"android:icon="@drawable/actionbar_search_icon"android:actionViewClass="android.widget.SearchView"android:showAsAction="ifRoom|collapseActionView"android:title="@string/action_search"/><item
        android:id="@+id/action_group_chat"android:icon="@drawable/menu_group_chat_icon"android:title="@string/menu_group_chat"/><item
        android:id="@+id/action_add_friend"android:icon="@drawable/menu_add_icon"android:title="@string/menu_addfriend"/><item
        android:id="@+id/action_scan"android:icon="@drawable/men_scan_icon"android:title="@string/menu_scan"/><item
        android:id="@+id/action_feedback"android:icon="@drawable/menu_feedback_icon"android:title="@string/menu_feedback"/>
</menu>

styles.xml内容:

<resources><!-- Base application theme. --><style name="AppBaseTheme" parent="Theme.AppCompat.Light"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="android:actionOverflowButtonStyle">@style/WeiXinOverflowButtonStyle</item></style><style name="WeiXinOverflowButtonStyle"><item name="android:src">@drawable/actionbar_add_icon</item></style><!-- Application theme. --><style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"><!-- <style name="AppTheme" parent="AppBaseTheme">--><!-- All customizations that are NOT specific to a particular API-level can go here. --></style>
</resources>

drawable资源:

运行结果如图:


安卓Andriod使用入门(二)【高仿安卓微信6.0】相关推荐

  1. iOS高仿新版微信扫一扫源码

    iOS版本高仿新版微信V8.0.6扫一扫.支持全屏扫码,支持识别多个二维码,支持选择指定二维码,支持从相册选取二维码,支持光线暗打开手电筒.无需多余的文件,一个Controller即可搞定,可继承,可 ...

  2. progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条

    progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条 附上我在公司做下载播放项目 主要使用方法 progressBlock = (ProgressBlock) f ...

  3. Netty入门与实战:仿写微信IM即时通讯系统

    转载自:Netty入门与实战:仿写微信IM即时通讯系统 Netty是互联网中间件领域使用最广泛最核心的网络通信框架,几乎所有互联网中间件或者大数据领域均离不开Netty,掌握Netty是作为初中级工程 ...

  4. 苹果android怎么升级,微信系统大升级,苹果安卓手机如何升级更新为最新版微信8.0?...

    原标题:微信系统大升级,苹果安卓手机如何升级更新为最新版微信8.0? 昨天,微信发布了最新版微信8.0.与以往不同的是,作为一款已风靡十年的社交产品,微信此次版本更新带来许多全新玩法和小创意. 目前苹 ...

  5. 苹果android怎么升级,微信系统升级!苹果安卓手机如何升级更新为最新版微信8.0?...

    昨天,微信发布了最新版微信8.0.与以往不同的是,作为一款已风靡十年的社交产品,微信此次版本更新带来许多全新玩法和小创意. 目前苹果手机用户可以点击"关于微信"进行自动升级,安卓系 ...

  6. 安卓Andriod使用入门(八)【联动ListView】

    人生最大的幸福是放得下. MainActivity.java代码: package siso.multilistview;import android.content.Intent; import a ...

  7. 安卓Andriod使用入门(十九)【网络视频播放器】

    有时侯明白人的一生当中,深刻的思念是维系自己与记忆的纽带.它维系着所有的过往.悲喜,亦指引我们深入茫茫命途.这是我们宿命的背负.但我始终甘之如饴地承受它的沉沉重量,用以平衡轻浮的生. MainActi ...

  8. 安卓淘宝商店界面之高仿类CollapsinToolBar 直接搬运到项目中

      先说明一下这是我下载下来的demo稍作修改的,并不是原创,找不到原文链接了,如各位朋友有发现,请回复一下链接,谢谢!    OK 先上GIF看看效果    首先看看主界面: MainActivit ...

  9. 雨林木风高仿XP系统 3.0版下载地址

    今天,Ylmf OS 3.0,或许你会眼前一亮,你会觉得它相比老版顺手很多,它是用不同的创意来诠释应用上的便利.我们对提高用户体验充满信心.      雨林木风开源操作系统一直受到全球关注,有更多的资 ...

最新文章

  1. 万万没想到,坤坤洗白的第一步是周琦…
  2. 使用PaddleFluid和TensorFlow训练RNN语言模型
  3. VUE-PDF VUE的PDF预览组件
  4. numpy保存/读取pickle
  5. Factorization Machine 1
  6. 跨服务器、跨数据库、多表联合查询
  7. 笔画输入法6.8豪华版 破解版
  8. 华为HG8120C光猫换天邑TEWA-600AGM(百兆换千兆)的过程记录
  9. 知其然,不知其所以然
  10. sumif单列求和_sumif函数使用方法:单条件求和
  11. js方法禁止查看源文件、防止复制、禁止右键、防被框架的方法总结
  12. 前端面试总结2018.07
  13. 台式计算机 按键盘字母键 没反应6,台式电脑键盘没反应怎么回事 键盘按了没反应怎么办...
  14. layer php相册层,贤心旧版jquery layer.js如何展示相册
  15. 用python计算邮费考虑是否加急,用python计算residuals
  16. hdu3491 最小点割集(无向图求最小点割集通用方法)
  17. 一行能装逼的JavaScript代码的延伸
  18. django 快速实现文件上传(django2.0)
  19. The supplied data appears to be in the Office 2007+ XML. You are calling the
  20. 华为ME60、S9306从设备观看光模块收/发光命令

热门文章

  1. Python爬虫开发从入门到实战
  2. 怎样在php中退出登录,php如何实现退出登录功能
  3. 安卓桌面壁纸_教你一分钟定制你的个性锁屏桌面壁纸(安卓+ios)
  4. 林子雨教程中sqoop安装过程时区问题解决
  5. Huffman Tree
  6. python判断字符串间的包含关系
  7. ROS导航【01】: move_base包(导航和路径规划)
  8. Arnold阿诺德渲染器C4D插件安装及激活教程
  9. pandas笔记(3)——DataFrame数据查看,缺失值,异常值,重复值预处理
  10. 互联网的控制权——根服务器