本文实例为大家分享了Android仿安卓微信6.0的具体代码,供大家参考,具体内容如下
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 mTabs = new ArrayList<>();
private String[] mTitles = new String[]{"First Fragment","Second Fragment","Third Fragment","Fourth Fragment"};
private FragmentPagerAdapter adapter;
private List mTabIndicators = new ArrayList<>();
@Override
protected 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()) {
@Override
public android.support.v4.app.Fragment getItem(int position) {
return mTabs.get(position);
}
@Override
public int getCount() {
return mTabs.size();
}
};
}
//初始化所有view
private 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);
}
@Override
public 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
@Override
public 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);
}
@Override
public 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;i0){
ChangeColorIconWithText left = mTabIndicators.get(position);
ChangeColorIconWithText right = mTabIndicators.get(position+1);
left.setIconAlpha(1-positionOffset);
right.setIconAlpha(positionOffset);
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public 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.0
private 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);
}
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
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";
@Override
public 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内容:
strings.xml内容:
微信
查找
添加
发起群聊
意见反馈
添加朋友
扫一扫
通讯录
发现
我
main.xml内容 :
styles.xml内容:
- @color/colorPrimary
- @color/colorPrimaryDark
- @color/colorAccent
- @style/WeiXinOverflowButtonStyle
- @drawable/actionbar_add_icon
drawable资源:
运行结果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



