android 关于函数重写dll函数破解的问题

关于Android自定义view 你所需要知道的基本函数
开始时之前想吐槽一句。。iphone的闹钟,12小时制。我成功的把闹钟订到了下午5:00 导致错过一班飞机。心疼改签费。
候机ing,没有事做,来写一下学习自定义view必须掌握的基本函数。这里只挑一些常用的进行讲解。
首先 往Canvas上面draw需要一个Paint。 画笔常用的函数有哪些呢。由于木有调试环境,函数基本上默写,有错请评论提出,蟹蟹!
Paint p = new Paint();
//设置画笔的颜色
p.setColor(Color.parseColor(&#2EA4F2&));
//设置画笔的风格:全部填充FILL
只画轮廓STROKE
p.setStyle(Paint.Style.STROKE);
//设置画笔的宽度
p.setStrokeWidth(8);
//设置是否抗锯齿
p.setAntiAlias(true);
//设置文字大小
p.setTextSize(30);
//测量字符串的长度
p.MeasureText(&Hello World&);
当我们有了画笔后,就可以绘制基本图形。
//绘制一条从0,0到100,100的线
canvas.drawLine(0,0,100,100,p);
三角形&多边形
是用Path类实现的。Path类提供了点绘制线的功能,看例子
path.MoveTo(0,0);//给定path的起点
path.LineTo(10,10);//往10,10绘制一条路径
path.LineTo(5,3);//继续从10,10往5,3绘制一条路径
path.//将绘制的线形成封闭空间
canvas.drawPath(path,p);
//画一个矩形,左上角的坐标为0,0
右下角的坐标为100,50
canvas.drawRect(0,0,100,50,p);
圆角矩形:
//一个矩形
RectF rectF = new RectF(0,0,100,50);
//画一个圆角矩形,大小为rectF,20,20分表表示左边圆角的半径和右边圆角的半径
canvas.drawRoundRect(RectF,20,20,p);
//画一个圆,圆心为50,50
canvas.drawCircle(50,50,100,p);
弧形 注意这里第二个参数,是从三点钟方向为0&计算,所以想从12点中方向开始绘制,那么就是270&。第四个参数是决定是否经过圆心(自己改变一下这个参数就知道区别了)。
//画一个弧,弧所在矩形为rectF
从270&开始,画90& 不经过圆心
canvas.drawArc(rectF,270,90,false,p);
以上基本上是自定义view所用到的最基本的函数,欢迎补充。Android中关于重写方法调用父类方法的问题_百度知道
Android中关于重写方法调用父类方法的问题
这里的returnsuper.onKeyDown(keyCode,msg)最后是调用的父类Activity中的onKeyDown()还是调用的子类TestKeyEvent中重写的onKeyDown()?如果调用的是子类重写的方法onKeyDown(),...
这里的return super.onKeyDown(keyCode, msg)最后
调用的父类Activity中的onKeyDown()
调用的子类TestKeyEvent中重写的onKeyDown()?如果调用的是子类重写的方法onKeyDown(),那么可以用java中的多态解释吗?import android.app.Aimport android.os.Bimport android.util.Limport android.view.KeyEimport android.widget.TextVimport android.widget.ImageVimport android.os.Dpublic class TestKeyEvent extends Activity {
private static final String TAG = &TestKeyEvent&;
private ImageView mI
private TextView
mAlphavalueT
private int mA
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.testkeyevent);
mImage = (ImageView) findViewById(R.id.image);
mAlphavalueText = (TextView) findViewById(R.id.alphavalue);
mAlphavalue = 0
mImage.setAlpha(mAlphavalue);
mAlphavalueText.setText(&Alpha = & + mAlphavalue*100/0xff + &%&);
protected void onDestroy() {
super.onDestroy();
public boolean onKeyDown(int keyCode, KeyEvent msg){
Log.v(TAG, &onKeyDown: keyCode =
&+ keyCode);
Log.v(TAG, &onKeyDown: String =
& + msg.toString());
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
case KeyEvent.KEYCODE_DPAD_RIGHT:
mAlphavalue += 20;
case KeyEvent.KEYCODE_DPAD_DOWN:
case KeyEvent.KEYCODE_DPAD_LEFT:
mAlphavalue -= 20;
if(mAlphavalue&=0xFF)mAlphavalue = 0xFF;
if(mAlphavalue&=0x0)mAlphavalue = 0x0;
mImage.setAlpha(mAlphavalue);
mAlphavalueText.setText(&Alpha = & + mAlphavalue*100/0xff + &%&);
return super.onKeyDown(keyCode, msg);
public boolean onKeyUp(int keyCode, KeyEvent msg){
Log.v(TAG, &onKeyUp: keyCode =
&+ keyCode);
Log.v(TAG, &onKeyUp: String =
& + msg.toString());
return super.onKeyUp(keyCode, msg);
}}这里的return super.onKeyDown(keyCode, msg)最后
调用的父类Activity中的onKeyDown()
调用的子类TestKeyEvent中重写的onKeyDown()?如果调用的是子类重写的方法onKeyDown(),那么可以用java中的多态解释吗?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
woshidaniel知道合伙人
woshidaniel
采纳数:615
获赞数:6170
擅长:暂未定制
重写父类方法后,要调用父类的方法需要加super,显示指定调用父类。这和android没有关系,主要是java的语法。示例:public&class&P{&&&public&void&show(){&&&}}public&class&S&extends&P{&&&public&void&show(){&&&&&&super.show();//这里显示指定调用父类的show方法,不加super,只会调用子类的方法&&&}}本问题解决:所以这里加了super.onKeyDown后,调用的就是父类的onKeyDown方法。
ykhotdog知道合伙人
采纳数:46
获赞数:60
这就是java。不要把android看得太神奇,它就相当于一个庞大的java框架而已
这里的return super.onKeyDown(keyCode, msg)最后
调用的父类Activity中的onKeyDown()
调用的子类TestKeyEvent中重写的onKeyDown()?
它会调用子类TestKeyEvent中重写的onKeyDown()但是你的重写里面自己本身又掉用了return super.onKeyDown(keyCode, msg);所以父类的也会被执行。如果把return super.onKeyDown(keyCode, msg);改成return true(false);父类方法不显式调用,父类就不会执行
本回答被提问者和网友采纳
liziride知道合伙人
采纳数:159
获赞数:553
return super.onKeyDown(keyCode, msg)这一句调用的是父类的方法其次,在手机上操作的时候,调用的是TestKeyEvent中的onKeyDown,在最后一句执行return的时候又执行了父类的onKeyDown如果不需要执行父类的onKeyDown,可以根据情况直接return true或者false & & & & & & & return true表示事件处理完毕,不继续传递,return false 表示时间继续传递给父元素
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。android 自定义view的时候 为什么onLayout()函数会被调用两次
<a data-traceid="question_detail_above_text_l&&
自定义view的时候 为什么onLayout()函数会被调用两次&
Called from layout when this view should assign a size and position to each of its children. Derived classes with children should override this method and call layout on each of their children.
文档里面是这么解释的,我猜里面是不是有两个子view?
如果你看过listadapter的getview函数,你就知道,刚显示list的时候回调用好几次。大概是系统显示前有不同的实例获取view或者调用过这个函数(Settingsandroid4.0+)
hierarchyviewer&SettingsSubSettings
hierarchyviewer&SubSettingfragment
Settings.javagetMetaDatagetStartingFragmentClass
SettingsshortcutshortcutSettings
Settingsshortcut,hierarchyviewerSubSettings(Data&usage)
Settings.java
-----------------------------------------------------------------------------------------------------------------------------------------
AndroidSettingsSettings
-----------------------------------------------------------------------------------------------------------------------------------------
SettingsPreferenceActivityPreferenceFragment
Settings.javaPreferenceActivitySettings,loadHeadersFromResource(api&level&11)res/xml/settings_headers.xmlsettings_headers.xmlSettingsheaderSoundDisplaySettings.HeaderAdapterheaderSettings.HeaderAdaptergetViewheader
static int getHeaderType(Header header) {
if (header.fragment == null && header.intent == null) {
return HEADER_TYPE_CATEGORY; // 因为没有指明fragment和intent
} else if (header.id == R.id.wifi_settings || header.id == R.id.bluetooth_settings || header.id == R.id.mobiledata_settings) {
return HEADER_TYPE_SWITCH; // 针对特定的三个header,分别为Wi-Fi、Bluetooth和Mobile data
return HEADER_TYPE_NORMAL;
headerheader(Display)PreferenceFragmentsettings_headers.xml&intent&(PreferenceActivityonHeaderClick())startActivity&intent&targetClass(Add&account)
hierarchyviewer&SettingsSubSettings
SubSettings.javaSettings.java
SubSettings.java
Stub&class&for&showing&sub-&we&can't&use&the&main&Settings&class&since&for&our&app&it&is&a&special&singleTask&class。
Settings.javaandroid:launchMode="singleTask"
FragmentActivitySettingsPreferenceFragmentActivity.
FragmentIntent().Settings.java(super),intentsetClassSubSettings.java.(settings_headers.xmlintentheader)
SettingsfragmentSubSettingsActivityhierarchyviewerActivity(Fragment)hierarchyviewer&SettingsSubSettings
hierarchyviewer&SubSettingfragment
res/xml/settings_headers.xmlheaderfragmentfragment
Displayhierarchyviewer&SubSettingsettings_headersfragment
Displayheadersettings_headers.xml
&!-- Display --&
android:id="@+id/display_settings"
android:icon="@drawable/ic_settings_display"
android:fragment="com.android.settings.DisplaySettings"
android:title="@string/display_settings" /&
&headerandroid:fragmentfragmentDisplaycom.android.settings.DisplaySettingsfragment
header,SettingsonHeaderClickPreferenceActivityonHeaderClickheaderfragmentmSinglePane()truestartWithFragmentstartWithFragmentonBuildStartFragmentIntentintent(),intentactivityfragment
SettingsDisplay.
(Bluetooth,ActivityBluetoothSettingsActivity(SettingsSubSettings),fragmentcom.android.settings.bluetooth.BluetoothSettings)
fragmentcom.android.settings.DisplaySettingsactivitycom.android.settings.SubSettings.fragmentonHeaderClickactivityonBuildStartFragmentIntent()
startActivitySubSettings.javaSubSettingsPreferenceActivityonCreate(Settings.javaonCreatesuper.onCreate())SettingsintentonCreate(PreferenceActivity)initialFragment&com.android.settings.DisplaySettingsswitchToHeader(),switchToHeaderInnerFragmentTransactiontransaction.replace(com.android.internal.R.id.prefs,&f).fragmentonCreateviewvisibilityprefs,com.android.internal.R.id.headersvisibilityVIEW.GONE.
PreferenceActivitypreference_list_content.xml
Settings.javagetMetaDatagetStartingFragmentClass
,^_^getMetaDataAndroidManifest.xmlActivity&meta-data&getStartingFragmentClassActivityintentgetStartingFragmentClassgetMetaData(manage&apps)
SettingsshortcutshortcutSettings
SettingsshortcutLuancherCreateShortcut,shortcutintentCreateShortcutLuancherActivity(CreateShortcutonListItemClick),IntentSubSettings(LuancherActivityintentForPositionsetClassName()SubSettings).
CreateShortcutshortcut
LuancherActivityActivityAdaptermakeListItemsPackageManagerqueryIntentActivitiesintentactivityintentgetTargetIntentCreateShortcutActivity
&category android:name="com.android.settings.SHORTCUT" /&
Securityshortcutandroidmanifest.xmlSettings$SecuritySettingsActivity
&category android:name="com.android.settings.SHORTCUT" /&
shortcutSettings,IntentfragmentactivityPreferenceActivityonCreateswitchToHeader()-&setSelectedHeader(null)-&switchToHeaderInner()-&transaction.replace(com.android.internal.R.id.prefs,&f);
fragment(activityintent.switchToHeaderInnerFragment.instantiateContextthis!!)onHeaderClickonBuildStartFragmentIntent(Settings)Activity
Settingsshortcut,hierarchyviewerSubSettings(Data&usage)
hierarchyviewerSubSettingsonBuildStartFragmentIntent()shortcutSettingsSubSettingsSubSettings()
Settings.java
BluetoothSettingsActivitySettings.java(private)ActivitySettingsshortcut(data&usage),shortcutqueryIntentActivities;Activitymeta-data;SubSettings,SettingsBluetoothBluetoothSettingsActivityBluetoothBluetoothSettingsActivityandroid:clearTaskOnLaunch="true"
阅读(...) 评论()&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
Android Studio 重写方法时形参名显示异常解决办法
摘要:今天在敲代码的时候,使用AS的自动生成代码功能,如下TextWatch类中的重载方法,其中部分形参名显示出现异常,这里的异常理解为意义不清晰mTitleField.addTextChangedListener(newTextWatcher(){@OverridepublicvoidbeforeTextChanged(CharSequencecharSequence,inti,inti1,inti2){}@OverridepublicvoidonTextChanged(Char
今天在敲代码的时候,使用AS的自动生成代码功能,如下TextWatch类中的重载方法,其中部分形参名显示出现异常,这里的异常理解为意义不清晰 mTitleField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @Override public void afterTextChanged(Editable editable) { }});
上网查了一会发现根本没有人提到,有的甚至说形参无所谓什么名字,但是一个完整的名字还是很重要的,特别是遇到那些不熟悉的api函数
问题原因:未关联源码导致的问题,很可能你没下载相关的SDK源码包
解决办法,点开SDK Manager下载即可
但是我之前将常见sdk 都下载下来了,还是出现问题,打开build.gradle(Module.app),可以看到如下信息: compileSdkVersion 24buildToolsVersion &24.0.0&defaultConfig { applicationId &com.wuyudong.criminalintent& minSdkVersion 16 targetSdkVersion 24 versionCode 1 versionName &1.0& testInstrumentationRunner &android.support.test.runner.AndroidJUnitRunner&}
targetSdkVersion 24 ?原来在新建项目的时候,自己只能指定minSdkVersion的值,其他的都是默认最新的版本,难怪会关联不上sdk,因为我没有下载这个版本的sdk源码,这时修改相应的版本号即可,修改为: compileSdkVersion 23buildToolsVersion &23.0.1&defaultConfig { applicationId &com.wuyudong.criminalintent& minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName &1.0& testInstrumentationRunner &android.support.test.runner.AndroidJUnitRunner&}
再次使用AS的自动生成代码功能,TextWatch类中的重载方法,其中部分形参名显示正常: mTitleField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { }});
总结就到这里,如果你还有补充,请留言告诉我,enjoy it
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
Android Studio 重写方法时形参名显示异常解决办法相关信息,包括
的信息,所有Android Studio 重写方法时形参名显示异常解决办法相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International}

我要回帖

更多关于 函数的重写 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信